【问题标题】:How to make a function return after a specific amount of time如何在特定时间后使函数返回
【发布时间】:2014-06-17 05:29:45
【问题描述】:
我有一个代理测试功能。在它里面我有一个 catch 块,如果代理不好,在指定的时间量 (TIMEOUT) 后我返回一个错误标志。问题是即使没有异常存在,该函数每 10 次挂起一次。实际上 HttpWebResponse.Timeout 不能正常工作(或者它可能工作但我不知道如何使用它)。如果我的 try...catch 没有捕获所有错误,如何使该方法在特定时间后自动返回错误标志?
【问题讨论】:
标签:
c#
.net
httpwebrequest
try-catch
system.net.webexception
【解决方案1】:
找不到链接,我不久前在 SO 上找到的那个解决方案。
public class TimeoutInvoker
{
public static void Run(Action action, int timeout)
{
var waitHandle = new EventWaitHandle(false, EventResetMode.ManualReset);
AsyncCallback callback = ar => waitHandle.Set();
action.BeginInvoke(callback, null);
if (!waitHandle.WaitOne(timeout))
throw new TimeoutException("Timeout.");
}
}
只需使用您的操作和超时作为参数。
示例:
TimeoutInvoker.Run(()=>LongRunningFunction(), 60000);