我们知道,现在MSDN已经取消了Thread.Abort方法,那么可以采用什么方法来终止线程呢?对了,就是CancellationTokenSource取消令牌
但在使用的过程中我们要注意,如果你渴望Thread线程结束后再次启动,不仅Thread需要重新new一个,CancellationTokenSource取消令牌也需要重新new一个,否则cancellationToken.IsCancellationRequested将一直是取消状态,无法运行新的线程
令牌声明如下
CancellationTokenSource tokensource;
启用线程代码如下
tokensource = new CancellationTokenSource();
if (flag == 1)
{
thread = new Thread(ShowLogInfo);
thread.Start();
}
else { tokensource.Cancel();}
ShowLogInfo函数如下
CancellationToken cancellationToken = tokensource.Token;
while (flag == 1)
{
if (cancellationToken.IsCancellationRequested)
{
return;
}
try
{
Dispatcher.Invoke(() =>
{
});
}catch (Exception ex)
{
return;
}
Thread.Sleep(1000);
}