如果有人可以帮助我,请 我正在尝试使用TPL链接取消令牌.问题是在取消主要CancellationTokenSource后,链接令牌的属性IsCancellationRequested的值仍为"false".
我开始做两件事,只是为了确定 - 但它应该是一样的.到第一个我通过CancellationToken,到第二个我通过CancellationTokenSource.行为是相同的:在while循环中 - 条件linkedToken.IsCancellationRequested在取消后保持"false".
这是我正在使用的代码:
public class Manager
{
private Task tokenTask;
private Task sourceTask;
private CancellationTokenSource mainCancelationTokenSource;
private CancellationToken mainToken;
public Manager()
{
this.mainCancelationTokenSource = new CancellationTokenSource();
this.mainToken = mainCancelationTokenSource.Token;
this.mainToken.Register(MainCanceled);
}
public void Start()
{
Workers w = new Workers();
tokenTask = Task.Run(() => w.DoWorkToken(mainToken), mainToken);
sourceTask = Task.Run(() => w.DoWorkSource(mainCancelationTokenSource), mainCancelationTokenSource.Token);
}
public void Cancel()
{
mainCancelationTokenSource.Cancel();
}
private void MainCanceled()
{
try
{
tokenTask.Wait();
}
catch (Exception e)
{
}
try
{
sourceTask.Wait(); …Run Code Online (Sandbox Code Playgroud) c# task task-parallel-library cancellationtokensource cancellation-token