BackgroundWorker RunWorkerCompleted事件
我的C#应用程序有几个后台工作人员。 有时候一个后台工作人员会开火。 当第一个后台工作器完成并且RunWorkerCompleted
事件被触发时,该事件将在哪个线程触发,UI或调用RunWorkerAsync
的第一个后台工作器? 我正在使用Microsoft Visual C#2008速成版。 任何想法或build议,你可能会感激。 谢谢。
如果BackgroundWorker
是从UI线程创build的,那么RunWorkerCompleted
事件也将在UI线程上引发。
如果它是从后台线程创build的,则该事件将在未定义的后台线程(不一定是相同的线程,除非使用自定义SynchronizationContext
)引发。
有趣的是,这似乎并没有在MSDN上得到很好的logging。 我能find的最好的参考是在这里 :
在您的应用程序中实现multithreading的首选方法是使用BackgroundWorker组件。 BackgroundWorker组件使用事件驱动的multithreading模型。 后台线程运行您的DoWork事件处理程序,并且创build您的控件的线程运行您的ProgressChanged和RunWorkerCompleted事件处理程序。 您可以从ProgressChanged和RunWorkerCompleted事件处理程序调用您的控件。
- 最简单的方法来读取和写入文件
- C#XmlSerializer BindingFailure
- LINQ:何时使用SingleOrDefault与FirstOrDefault()与过滤标准
- 如何知道字节的字节大小?
- 为webClient.DownloadFile()设置超时
- “Blend \ Newtonsoft.Json.dll”和“Solution \ packages \ … \”中均存在“Newtonsoft.Json …”
- 新的asp.net图表控件 – 他们将使用MVC(最终)?
- .NET中的dependency injection的例子?
- 无法build立SSL / TLS安全通道 – SOAP的信任关系