终止正在执行的线程
很多人都说使用Abort方法来终止线程,其实这种做法并不可取!如果你的线程正在操作临界资源,很有可能会造成资源没有正确释放而出现死锁问题。正确的做法应该是使用标记来终止线程的执行。 基本思路是:定义一个用于描述“停止”信号的变量,在整个程序启动前,设置该变量为false。在线程中,循环判断该变量是否已经被设置为true,如果没有,则继续执行,否则就退出循环并释放资源,然后退出执行。当我们需要线程退出时,只要设置这个“停止”信号为true即可。 下面我们来看具体的操作步骤。 首先定义一个“停止”信号变量: view plaincopy to clipboardprint?- private volatile bool canStop = false;
- i = 0;
- // 使用匿名方法定义线程的执行体
- Thread thread = new Thread(
- delegate(object param)
- {
- // 等待“停止”信号,如果没有收到信号则执行
- while (!canStop)
- {
- i++;
- UpdateLabel(i);
- }
- // 此时已经收到停止信号,可以在此释放资源并
- // 初始化变量
- canStop = false;
- });
- thread.Start();
点击下载此文件
转载至:http://www.cnblogs.com/daxnet/archive/2008/11/06/1687017.html
查看完整版本: 终止正在执行的线程
Tags: