我有一个异步任务和一个Task.Delay(时间,令牌)在里面。我从我的主线程对该方法进行等待调用。每当取消令牌为真时,它就会中断我的主线程。我需要处理/避免Task.Delay()中的任何异常。有什么可能吗?
代码片段:
protected override async Task RunAsync(CancellationToken cancellationToken)
{
await StartHealthMonitorAsync(cancellationToken);
}
private async Task StartWorkAsync(CancellationToken cancellationToken)
{
var delaySpan = TimeSpan.FromMinutes(1);
while (!cancellationToken.IsCancellationRequested)
{
await Task.Delay(delaySpan, cancellationToken);
await someTask.DoWorkAsync(cancellationToken);
}
}
谢谢
发布于 2017-02-10 20:30:48
我需要处理/避免Task.Delay()中的任何异常。有什么可能吗?
是。使用catch
protected override async Task RunAsync(CancellationToken cancellationToken)
{
await StartWorkAsync(cancellationToken);
}
private async Task StartWorkAsync(CancellationToken cancellationToken)
{
var delaySpan = TimeSpan.FromMinutes(1);
try
{
while (true)
{
await Task.Delay(delaySpan, cancellationToken);
await someTask.DoWorkAsync(cancellationToken);
}
}
catch (OperationCanceledException)
{
}
}
我还删除了IsCancellationRequested
的额外检查,因为这是不必要的。
https://stackoverflow.com/questions/42153024
复制相似问题