【发布时间】:2018-10-19 11:01:38
【问题描述】:
我正在编写一个函数,该函数接收要满足的条件和超时,并在满足条件或超时时完成。
这是我目前所拥有的:
public static bool CheckWithTimeout(bool toBeChecked, int msToWait)
{
//var src = CancellationSource
var task = Task.Run(()=> {
while (!toBeChecked)
{
System.Threading.Thread.Sleep(25);
}
});
if (task.Wait(TimeSpan.FromMilliseconds(msToWait)))
return toBeChecked;
else
return false;
}
它适用于简单的布尔值,但我想这样称呼它:
CheckWithTimeout(myValue > 10, 500)
当 myValue 大于 10 或经过 500 毫秒时它会返回(在这种情况下返回 false)
我检查了一下,我认为 Func 是我需要的,但是.. 我找不到合适的例子。 此外,如果有现有的方法来实现这一点,我肯定会更喜欢它。
【问题讨论】:
-
您考虑过使用timeout functionality 的Polly nuget package 吗?
-
我公司有一些关于 Nugets 的政策,所以.. 我宁愿编写代码
-
检查上面链接中的答案,我想你会找到你需要的。
-
我严格回答了下面的问题,但在功能上,我觉得奇怪的是,您对“myValue