【发布时间】:2016-11-02 07:02:36
【问题描述】:
question 回答了我们如何异步等待任务超时完成。
我编写了一个类似的异步方法,如下所示,它检查当前值是否大于某个定义的阈值。
public async Task<bool> FindThreshold(CancellationTokenSource cts)
{
await Task.Run(()=> {
if (this.currentValue >= this.ThresholdValue) {
this.ThresholdFound = true;
} else {
this.ThresholdFound = false;
}
});
if (ThresholdFound)
return true;
else
return false;
}
基于类似的解决方案given我调用的函数如下图,
var found = await FindThresholdAsyncAsync(cts);
if (await Task.WhenAny(task, Task.Delay(
TimeSpan.FromMilliseconds(Convert.ToDouble(timeout)*1000),
cts.Token) == found)
{
await found;
}
错误消息表明运算符“==”不能应用于“任务”和“布尔”类型的操作数。我确实理解 Task.Delay 返回一个任务,但我无法弄清楚为什么它在提到here 的解决方案的情况下工作。显然,我遗漏了一些东西,所以任何见解都会非常有帮助。
【问题讨论】:
标签: c# .net asynchronous task-parallel-library