BackgroundWorker和Thread之间的区别?

Nig*_*hil 11 .net multithreading

BackgroundWorker和之间有什么区别Thread?在我的应用程序中,我使用的是一个定期与数据库通信的消息传递系统.我想在这里使用哪一个:BackgroundWorker或者Thread?

Dar*_*rov 21

一个BackgroundWorker的是一个准备使用类的WinForms允许执行从而避免了冻结UI而除了这使您可以轻松地元帅主线程,让你更新的可能性就成功回调的执行在后台线程任务用户界面与结果.它还可以跟踪进度并取消任务.它使用线程池中的线程.

另一方面,Thread是一个允许您在新线程上执行某些任务的类.这是一个更基本的概念.


Chr*_*isF 9

虽然BackgroundWorker该类不是从Thread类派生的,但它使您能够比自己创建和调用线程更容易地管理工作.

它提出了三个关键事件:

  • DoWork - 线程启动时引发.
  • ProgressChanged - 引发向主UI线程报告进度.
  • RunWorkerCompleted - 线程完成时引发.

通过这些,您可以在调用RunWorkerAsync()启动它之后监视线程正在执行的工作.