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

时间:2009-10-24 19:41:49

标签: c# vb.net multithreading

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

2 个答案:

答案 0 :(得分:37)

BackgroundWorker类基本上抽象Thread创建和监控过程,并为您提供事件驱动的API来报告操作的进度(ProgressChanged)并确定您的操作何时已完成(RunWorkerCompleted)......

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

答案 1 :(得分:18)

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

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