用取消令牌取消Task
CancellationTokenSource
:取消令牌cancellationTokenSource?.Cancel();
:其中?
表示判断cancellationTokenSource是否为null,如果不是null才取消,否则会造成找不到实例的异常- 当
!cancellationToken.IsCancellationRequested
后则不再进入While循环中,最后等待Thread.Sleep(2000);
后Task资源被释放。
internal class Class1
{
private CancellationTokenSource cancellationTokenSource;
public void CancelTask()
{
cancellationTokenSource?.Cancel();
}
public void process()
{
cancellationTokenSource = new CancellationTokenSource();
CancellationToken cancellationToken = cancellationTokenSource.Token;
Task.Run(() =>
{
while (!cancellationToken.IsCancellationRequested)
{
Thread.Sleep(1000);
}
Thread.Sleep(2000);
});
}
}
标签:cancellationToken,释放,Task,Thread,取消,手动,cancellationTokenSource,CancellationToken
From: https://www.cnblogs.com/xiacuncun/p/18431570