我可以获取在任务操作执行期间传递给 Task
构造函数的 CancellationToken
吗?大多数示例如下所示:
CancellationTokenSource cts = new CancellationTokenSource();
CancellationToken token = cts.Token;
Task myTask = Task.Factory.StartNew(() =>
{
for (...)
{
token.ThrowIfCancellationRequested();
// Body of for loop.
}
}, token);
但是,如果我的操作不是 lambda,而是放在其他类中的方法,并且我无法直接访问 token
怎么办?唯一的方法是将 token
作为状态传递吗?
最佳答案
But what if my action is not lambda but a method placed in other class and I don't have direct access to token? Is the only way is to pass token as state?
是的,在那种情况下,您需要传递作为状态装箱的 token ,或包含在您用作状态的其他类型中。
但是,仅当您计划在方法中使用 CancellationToken
时才需要这样做。例如,如果您需要调用 token.ThrowIfCancellationRequested()
。
如果您只是使用 token 来阻止方法被安排,那么它不是必需的。
关于c# - 获取任务取消 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15439245/