把线程设的IsBackground设为true,你可以在AutoResetEvent.WaitOne()的另一个分支里边加一个标记是否退出的条件判断,如果标记量为false那个直接退出循环自动退出线程,目前你的线程停留在AutoResetEvent.WaitOne()处,你可以先把标记量设为false,然后调用AutoResetEvent对象的Set()方法激活,让程序执行到AutoResetEvent对象的WaitOne()方法的另一个分支去,在另外一个分支里判断标记量为false就可以安全的退出线程的,我一般不会去用线程的abort方法。
举个例子:
bool ok = false;
AutoResetEvent are = new AutoResetEvent(false);
while(true)
{
if (bOk)
{
if(bFalg)
{
break;
}
Console.WriteLine("你好");
Thread.Sleep(1000);
}
else
{
Console.WriteLine("我等待");
are.WaitOne();
}
}
bOk和bFalg为bool类型,想要退出线程只需要把bFalg设为false,调用are.Set();
希望对你有用