参考MSDN
“多线程处理”指的是一个程序同时执行多个操作线程的能力,多线程处理可以是组件编程中的一个非常强大的工具。通过编写多线程组件,您可以创建在后台执行复杂计算的组件,它们允许用户界面 (UI) 在计算的过程中自由地响应用户输入。
在组件中进行多线程处理可以采用以下几种方式:
1. 使用 System.Threading 对组件进行多线程编程,提供支持多线程编程的类和接口,比如Thread,ThreadStart. “使用 Visual C# 创作简单的多线程组件”就是这样的例子http://msdn.microsoft.com/zh-cn/library/48cfdff6(v=vs.110).aspx。
2. BackgroundWorker 组件,该组件替换了 System.Threading 命名空间并添加了功能。使您可以在与应用程序的主 UI 线程不同的线程上在后台运行耗时的操作,如图像下载、Web 服务调用、文件下载和上载(包括点对点应用程序)、复杂的本地计算、数据库事务、本地磁盘访问(相对于内存访问来说其速度很慢)等耗时的操作,BackgroundWorker组件可以提供一种方便的解决方案。具体使用参见http://msdn.microsoft.com/zh-cn/library/c8dcext2(v=vs.80).aspx
3. 基于事件的异步模式。System.Threading 命名空间提供了创建高性能多线程应用程序所必需的所有工具,但要想有效地使用这些工具,需要有丰富的使用多线程软件工程的经验。对于相对简单的多线程应用程序,BackgroundWorker 组件提供了一个简单的解决方案。对于更复杂的异步应用程序,请考虑实现一个符合基于事件的异步模式的类。
基于事件的异步模式具有多线程应用程序的优点,同时隐匿了多线程设计中固有的许多复杂问题。使用支持此模式的类,您将能够:
1).“在后台”执行耗时任务(例如下载和数据库操作),但不会中断您的应用程序。
2).同时执行多个操作,每个操作完成时都会接到通知。
3).等待资源变得可用,但不会停止(“挂起”)您的应用程序。
4).使用熟悉的事件和委托模型与挂起的异步操作通信。
具体使用参见http://msdn.microsoft.com/zh-cn/library/hkasytyf(v=vs.80).aspx