相关疑难解决方法(0)

任务构造函数中的取消令牌:为什么?

某些System.Threading.Tasks.Task构造函数将a CancellationToken作为参数:

CancellationTokenSource source = new CancellationTokenSource();
Task t = new Task (/* method */, source.Token);
Run Code Online (Sandbox Code Playgroud)

令我感到困惑的是,从方法体内部无法实际获取传入的令牌(例如,没有什么比这样Task.CurrentTask.CancellationToken).必须通过某种其他机制提供令牌,例如状态对象或在lambda中捕获.

那么在构造函数中提供取消令牌的目的是什么呢?

c# .net-4.0 task-parallel-library cancellation-token

214
推荐指数
4
解决办法
5万
查看次数

获取任务取消语句

我可以在执行任务操作期间获取CancellationToken传递给Task构造函数的内容.大多数样本看起来像这样:

CancellationTokenSource cts = new CancellationTokenSource();
CancellationToken token = cts.Token;

Task myTask = Task.Factory.StartNew(() =>
{
    for (...)
    {
        token.ThrowIfCancellationRequested();

        // Body of for loop.
    }
}, token);
Run Code Online (Sandbox Code Playgroud)

但是如果我的行为不是lambda而是放在其他类中的方法并且我没有直接访问权限token呢?唯一的方法是通过token国家?

.net c# multithreading cancellation-token

22
推荐指数
4
解决办法
9929
查看次数