【问题标题】: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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 2013-11-05
    相关资源
    最近更新 更多