Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.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#_Wpf_Multithreading - Fatal编程技术网

C# 在不阻塞UI线程的情况下执行一系列操作

C# 在不阻塞UI线程的情况下执行一系列操作,c#,wpf,multithreading,C#,Wpf,Multithreading,我想做一系列的动作,同时依靠它抛出或不抛出任何异常来更新我的UI,我怎么能实现这样的事情呢 我已经尝试为每个步骤创建新线程,但它不会等到其中一个步骤结束,并且总是使用thread.Join()写入失败消息,这也没有帮助,因为它也会阻止UI线程…您需要的。将要在后台线程中执行的代码放入DoWork处理程序,并将更新UI的代码放入RunWorkerCompleted事件处理程序 如果您想从DoWorkhandler更新GUI,您可以像这样在UI调度程序上对其进行排队- App.Current.Dis

我想做一系列的动作,同时依靠它抛出或不抛出任何异常来更新我的UI,我怎么能实现这样的事情呢

我已经尝试为每个步骤创建新线程,但它不会等到其中一个步骤结束,并且总是使用thread.Join()写入失败消息,这也没有帮助,因为它也会阻止UI线程…

您需要的。将要在后台线程中执行的代码放入
DoWork
处理程序,并将更新UI的代码放入
RunWorkerCompleted
事件处理程序

如果您想从
DoWork
handler更新GUI,您可以像这样在UI调度程序上对其进行排队-

App.Current.Dispatcher.BeginInvoke((Action)delegate
        {
           // Update GUI here.
        }, null);

您使用的是哪个.Net版本?此答案在NET4.0之前是正确的。从NET4.5开始,您可以使用异步等待模式。可以在以下位置找到描述它的文档: