标签:多线程开发 abort resetabort
使用Abort方法可以中止线程,而使用ResetAbort方法可以取消中止线程的操作。
下面的实例演示了Abort和ResetAbort方法的使用。
<span style="font-size:14px;">using System;
using System.Threading;
namespace AbortAndResetabortExp
{
class Program
{
static void Main(string[] args)
{
Thread t = new Thread(DoWork);
t.Name = "八戒";
t.Start();
Thread.Sleep(10000);
Console.WriteLine("悟空:八戒,该起床了");
t.Abort();
}
static void DoWork()
{
try
{
while (true)
{
Console.WriteLine(Thread.CurrentThread.Name + ":呼呼~~~~~");
Thread.Sleep(1000);
}
}
catch (ThreadAbortException e)
{
Console.WriteLine(Thread.CurrentThread.Name + ":还早呢,我还要再睡会");
Thread.ResetAbort();
}
for (int i = 0; i < 10; i++)
{
Console.WriteLine(Thread.CurrentThread.Name + ":呼呼~~~~~");
Thread.Sleep(1000);
}
}
}
}</span>
实例中,主线程启动“八戒”线程,使其“呼呼”睡觉。10秒钟后,主线程通过调用“八戒”线程的Abort方法中止“八戒”线程,“八戒”线程的Abort方法被调用后会触发ThreadAbortException异常,“八戒”线程捕获到该异常后,使用ResetAbort方法取消中止线程的操作,因为他还没有睡够呢。
整个程序的执行结果如下图所示,从结果中可以看出,调用ResetAbort方法后,线程仍然在执行。
C#多线程开发4:线程的Abort和ResetAbort方法
标签:多线程开发 abort resetabort
原文地址:http://blog.csdn.net/yl2isoft/article/details/45675367