【发布时间】:2017-06-26 20:42:16
【问题描述】:
我正在研究一种结构类似于以下代码的方法。取消令牌的作用是什么?是不是这样如果计算时间超过 1 秒就不会返回 T 并抛出错误?
public async Task<T> doSomething(CancellationToken ct = default(CancellationToken)) {
await Task.Delay(1000, ct);
//do something to calculate someT that might take a while
return someT;
}
【问题讨论】:
-
CancellationToken 用于取消 - 来自 Task.Delay 的任务将被取消,抛出 TaskCanceledException 并且 taht 将取消整个任务
-
Task.Delay 记录在案 - 如何使用以及它的作用
-
@SirRufo 那么这与 NUnit 测试中的 1 秒超时相同吗?
-
不,这里就像一个 Thread.Sleep (因为你在等待它)但是它可以被令牌取消
-
我正确理解你,在我计算 someT 的过程中,有两个可能的“路径”基于其他状态,我可以使用 ct 来取消一个路径上的延迟并让它完成但让另一条路径超时?
标签: c# asynchronous task cancellation