Jim*_*ell 26 .net c# events multithreading backgroundworker
我的C#应用程序有几个后台工作者.有时候一个后台工作人员会开火.当第一个后台工作程序完成并RunWorkerCompleted触发事件时,该事件将触发哪个线程,UI或从中RunWorkerAsync调用的第一个后台工作程序?我使用的是Microsoft Visual C#2008 Express Edition.任何您可能有的想法或建议将不胜感激.谢谢.
Aar*_*ght 60
如果BackgroundWorker是从UI线程创建的,那么该RunWorkerCompleted事件也将在UI线程上引发.
如果它是从后台线程创建的,则事件将在未定义的后台线程上引发(不一定是相同的线程,除非您使用自定义SynchronizationContext).
有趣的是,这似乎并没有完全记录在MSDN上.最好的参考我能够找到的是在这里:
在应用程序中实现多线程的首选方法是使用BackgroundWorker组件.的BackgroundWorker的组件使用多线程的事件驱动模型.后台线程运行您的DoWork事件处理程序,创建控件的线程运行ProgressChanged和RunWorkerCompleted事件处理程序.您可以从ProgressChanged和RunWorkerCompleted事件处理程序调用控件.
| 归档时间: |
|
| 查看次数: |
14566 次 |
| 最近记录: |