【发布时间】:2010-12-09 18:50:40
【问题描述】:
使用 BackgroundWorker 创建线程和使用 System.Threading.Thread 创建线程有什么区别?
【问题讨论】:
标签: c# vb.net multithreading
使用 BackgroundWorker 创建线程和使用 System.Threading.Thread 创建线程有什么区别?
【问题讨论】:
标签: c# vb.net multithreading
BackgroundWorker类基本上抽象了Thread的创建和监控过程,并给你一个事件驱动的API来报告操作的进度(ProgressChanged)并确定你的操作何时完成(RunWorkerCompleted )...
它最常见的用途之一是在后台执行长时间运行的进程时保持 Windows GUI 响应。所以基本上,它只是 System.Threading.Thread 的一个包装器,旨在使后台线程更简单一些(顾名思义!)
【讨论】:
BackgroundWorker 实际上是通过委托进行异步线程调用的包装器——使用反射器可以看到它相应地调用了开始/结束调用方法。这与System.Threading.Thread 的不同之处在于它使用线程池而不是启动一个全新的线程。
使用后台工作者的主要原因是它可以很好地插入 Windows 窗体应用程序。
【讨论】: