Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从任务并行库问题更新UI_C#_Task Parallel Library - Fatal编程技术网

C# 从任务并行库问题更新UI

C# 从任务并行库问题更新UI,c#,task-parallel-library,C#,Task Parallel Library,我正在学习第三方物流的艺术。因此,我尝试从TPL以增量方式更新UI,但我无法正确实现。以下是我正在使用的代码: int i = 0, flag = 5; var uiScheduler = TaskScheduler.FromCurrentSynchronizationContext(); Task.Factory.StartNew(() => { while (i < flag) { Task.

我正在学习第三方物流的艺术。因此,我尝试从TPL以增量方式更新UI,但我无法正确实现。以下是我正在使用的代码:

    int i = 0, flag = 5;
    var uiScheduler = TaskScheduler.FromCurrentSynchronizationContext();
    Task.Factory.StartNew(() =>
    {
        while (i < flag)
        {
            Task.Factory.StartNew(() =>
            {
                this.Text = i.ToString();
                //System.Threading.Thread.SpinWait(50000000);
            }, System.Threading.CancellationToken.None, TaskCreationOptions.None, uiScheduler);
            i++;
            System.Threading.Thread.Sleep(1000);

        }
    }, System.Threading.CancellationToken.None, TaskCreationOptions.None, uiScheduler);
另一种方法2
inti=0,flag=5;
var uiScheduler=TaskScheduler.FromCurrentSynchronizationContext();
Task.Factory.StartNew(()=>
{
while(i
{
this.Text=i.ToString();
},System.Threading.CancellationToken.None,TaskCreationOptions.None,uiScheduler);
i++;
System.Threading.Thread.SpinWait(50000000);//在这里工作
}

}); // 您告诉任务在启动初始任务时使用uiScheduler上下文。删除它,您的代码就可以了

int i = 0, flag = 5;
var uiScheduler = TaskScheduler.FromCurrentSynchronizationContext();
Task.Factory.StartNew(() =>
{
    while (i < flag)
    {
        Task.Factory.StartNew(() =>
        {
            this.Text = i.ToString();
        }, System.Threading.CancellationToken.None, TaskCreationOptions.None, uiScheduler);
        i++;
        System.Threading.Thread.Sleep(1000);

    }
}); // <---- Removed arguments (specifically uiScheduler)
inti=0,flag=5;
var uiScheduler=TaskScheduler.FromCurrentSynchronizationContext();
Task.Factory.StartNew(()=>
{
while(i
{
this.Text=i.ToString();
},System.Threading.CancellationToken.None,TaskCreationOptions.None,uiScheduler);
i++;
系统线程线程睡眠(1000);
}

}); // 您告诉任务在启动初始任务时使用uiScheduler上下文。删除它,您的代码就可以了

int i = 0, flag = 5;
var uiScheduler = TaskScheduler.FromCurrentSynchronizationContext();
Task.Factory.StartNew(() =>
{
    while (i < flag)
    {
        Task.Factory.StartNew(() =>
        {
            this.Text = i.ToString();
        }, System.Threading.CancellationToken.None, TaskCreationOptions.None, uiScheduler);
        i++;
        System.Threading.Thread.Sleep(1000);

    }
}); // <---- Removed arguments (specifically uiScheduler)
inti=0,flag=5;
var uiScheduler=TaskScheduler.FromCurrentSynchronizationContext();
Task.Factory.StartNew(()=>
{
while(i
{
this.Text=i.ToString();
},System.Threading.CancellationToken.None,TaskCreationOptions.None,uiScheduler);
i++;
系统线程线程睡眠(1000);
}

}); // 你在问什么?SpinWait做什么,或者如何使用TPL以正确的方式更新UI?您阅读了吗?文档中有什么你不明白的吗?我的代码不是以增量方式更新UI。你知道吗?我删除了SpinWait这个问题,因为它和你的实际问题并不相关。简言之,SpinWait“占用”了CPU,而Thread.Sleep使其处于休眠状态。如果你搜索“SpinWait vs.Sleep”,可能有很多资源要读。你在问什么?SpinWait做什么,或者如何使用TPL以正确的方式更新UI?您阅读了吗?文档中有什么你不明白的吗?我的代码不是以增量方式更新UI。你知道吗?我删除了SpinWait这个问题,因为它和你的实际问题并不相关。简言之,SpinWait“占用”了CPU,而Thread.Sleep使其处于休眠状态。如果您搜索“SpinWait vs.Sleep”,可能有很多资源需要阅读。如果我需要初始化任务并在按钮上运行,请单击。在dotnetv4.0中如何实现这一点。你能给我一些示例代码吗。谢谢,请使用上面的代码。或者保存任务(不要启动它),然后在用户单击按钮时通过单击事件运行它。您有什么问题?如果我需要初始化任务并按按钮运行,请单击。在dotnetv4.0中如何实现这一点。你能给我一些示例代码吗。谢谢,请使用上面的代码。或者保存任务(不要启动它),然后在用户单击按钮时通过单击事件运行它。你有什么问题吗?
int i = 0, flag = 5;
var uiScheduler = TaskScheduler.FromCurrentSynchronizationContext();
Task.Factory.StartNew(() =>
{
    while (i < flag)
    {
        Task.Factory.StartNew(() =>
        {
            this.Text = i.ToString();
        }, System.Threading.CancellationToken.None, TaskCreationOptions.None, uiScheduler);
        i++;
        System.Threading.Thread.Sleep(1000);

    }
}); // <---- Removed arguments (specifically uiScheduler)