【发布时间】:2019-05-08 10:31:20
【问题描述】:
我有一个使用 Task.Delay 1 分钟的方法。因此,当我想尝试取消该任务时,它会给我system.threading.tasks.taskcanceledexception a task was canceled 之类的错误,而不是取消该任务。
那么我怎样才能取消那个任务来处理这个错误呢。
public static System.Threading.CancellationTokenSource tokenSource = new System.Threading.CancellationTokenSource();
tokenSource.cancel();
public static async void waitForSignal(System.Threading.CancellationToken token)
{
await Task.Delay(60000, token); //here I am getting error while I am defining tokenSource cancel.
}
【问题讨论】:
-
是的,when you cancel a task 就是这样。使用
try catch处理异常。 -
您到底希望这做什么?您创建一个令牌然后取消它,然后想知道为什么不能延迟它?这段代码没有多大意义
-
也许
WaitOnemethod of theWaitHandle是你真正追求的? -
@Liam,实际上管理员正在从 wcf 服务获取信号,如果管理员不会从 wcf 获得预期的信号,那么它将等待 60 秒,如果管理员将在前 10 秒内获得预期的信号数量则不需要等待接下来的 50 秒。所以我需要使用cancellationtoken来取消任务。
-
WaitOne 会做什么
标签: c# async-await task