.NET 多线程
- 多线程
在一个程序中,这些独立运行的程序片断叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。多线程处理一个常见的例子就是用户界面。利用线程,用户可按下一个按钮,然后程序会立即作出响应,而不是让用户等待程序完成了当前任务以后才开始响应。
- 基础概念
- 进程
进程是应用程序的实例要使用的资源的一个集合。每个应用程序都在各自的进程中运行来确保应用程序不受其他应用程序的影响,如果一个应用程序失败了, 只会影响自己的进程,其他进程中的应用程序可以继续运行。进程是操作系统为我们提供的一种保护应用程序的一种机制。
- 线程
线程是进程中基本执行单元, 一个进程中可以包含多个线程,在进程入口执行的第一个线程是一个进程的主线程,在.Net应用程序中,都是以Main()方法作为程序的入口的, 所以在程序运行过程中调用这个方法时,系统就会自动创建一个主线程。他们之间的关系简单说:线程是进程的执行单元,进程是线程的一个容器了。
- 线程池
- 优点
-
- 用户体验更好
- 可同时执行多个任务
- 可将任务放到后台执行
- 缺点
-
- 大量线程由于操作系统切换线程而导致性能下降
- 不易调试
- 耗费资源
- 线程死锁
- 代码示例
- 引用多线程程序集:
using System.Threading;
|
- 新建线程实例:
Threadth = null;th = new Thread(new ThreadStart(MethodName)); |
- 启动多线程:
th.Start(); |
- 调用方法:
this.Invoke(new Action(this.MethodName)); this.Invoke(new Action<T>(this.MethodName),parameter); |
- 注销线程:
if(th.IsAlive) {th.Abort();} |
- 当线程运行时禁止调用该线程的方法再次创建新的线程
if(th != null) if (th.IsAlive) return; |