使用BackgroundWorker创建thead和使用System.Threading.Thread创建线程有什么区别?
答案 0 :(得分:37)
BackgroundWorker类基本上抽象Thread创建和监控过程,并为您提供事件驱动的API来报告操作的进度(ProgressChanged)并确定您的操作何时已完成(RunWorkerCompleted)......
最常见的用途之一是在长时间运行的进程在后台执行时保持Windows GUI响应。所以基本上,它只是System.Threading.Thread的一个包装器,旨在使背景线程更简单(顾名思义!)
答案 1 :(得分:18)
BackgroundWorker
实际上是通过委托进行异步线程调用的包装器 - 使用反射器可以看到它相应地调用begin / end调用方法。这与System.Threading.Thread
的不同之处在于它使用线程池而不是启动一个全新的线程。
使用后台工作程序的主要原因是它可以很好地插入Windows窗体应用程序。