BackgroundWorker和System.Threading.Thread之间的区别

Ice*_*ind 26 c# vb.net multithreading

使用BackgroundWorker创建thead和使用System.Threading.Thread创建线程有什么区别?

CMS*_*CMS 37

BackgroundWorker的类基本的抽象线程创建和监视过程,并为您提供一个事件驱动的API来报告操作(进度ProgressChanged),并确定当你操作完成(RunWorkerCompleted)...

其中一个最常见的用途是在后台执行长时间运行的进程时保持Windows GUI响应.所以基本上,它只是System.Threading.Thread的一个包装器,旨在使背景线程更简单(顾名思义!)


Mik*_*urs 18

BackgroundWorker实际上是通过委托进行异步线程调用的包装器 - 使用反射器可以看到它相应地调用了开始/结束调用方法.这不同于System.Threading.Thread它使用线程池而不是启动一个全新的线程.

使用后台工作程序的主要原因是它可以很好地插入Windows窗体应用程序.

  • +1用于准确捕获后台工作者使用线程池的事实.此外,如果您需要调用STA Com对象,因为无法设置公寓,那么对于知道BackgroundWorker不是一个好选择的人来说非常有用 (4认同)