您在此行上明确抛出了异常:
cancelToken.ThrowIfCancellationRequested();
如果要正常退出任务,则只需摆脱该行。
通常,人们将其用作一种控制机制,以确保中止当前处理而不会潜在地运行任何额外的代码。同样,
ThrowIfCancellationRequested()由于在功能上等同于:
if (token.IsCancellationRequested) throw new OperationCanceledException(token);
使用“
ThrowIfCancellationRequested()任务”时,看起来可能更像这样:
int CalculatePrime(CancellationToken cancelToken, object digits) { try{ while(true){ cancelToken.ThrowIfCancellationRequested(); //Long operation here... } } finally{ //Do some cleanup }}另外,
Task.Wait(CancellationToken)如果令牌被取消,将抛出异常。要使用此方法,您需要将Wait调用包装在一个
Try...Catch块中。
MSDN:如何取消任务



