如何在特定时间后使函数返回

Posted

技术标签:

【中文标题】如何在特定时间后使函数返回【英文标题】: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 没有捕获所有错误,如何使该方法在特定时间后自动返回错误标志?

【问题讨论】:

你能告诉我们你现在的代码吗? 【参考方案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);

【讨论】:

以上是关于如何在特定时间后使函数返回的主要内容,如果未能解决你的问题,请参考以下文章

如何在某人更改密码后使用户的 JWT 令牌无效

如何在 30 分钟后使 PHP 会话过期?

如何在Unity中不活动后使光标消失

(Django)如何在更改外键下拉列表后使“选定”选项有效?

如何在 Python Google Cloud 函数中返回特定状态

如何在请求后使 IdentityDbContext 保持活动状态,以便服务可以使用 UserManager 完成其任务?