You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中实现超时机制?5秒未返回值则返回false

实现异步方法5秒超时返回false的解决方案

你可以通过Task.WhenAny结合Task.Delay实现超时控制,当目标方法在指定时间内未完成时直接返回false。修改后的代码如下:

public async Task<bool> InformixTest()
{
    // 同时启动查询任务和5秒延迟任务
    var timeoutTask = Task.Delay(5000);
    var queryTask = _informixService.Reports("SELECT 1");

    // 等待最先完成的任务
    var completedTask = await Task.WhenAny(queryTask, timeoutTask);

    // 如果先完成的是延迟任务,说明超时,返回false
    if (completedTask == timeoutTask)
    {
        return false;
    }

    // 获取查询结果并判断返回值
    string query = await queryTask;
    return query != null;
}

关键说明:

  • Task.WhenAny会返回最先完成的任务,我们同时监听查询任务和5秒延迟任务,以此判断是否超时。
  • 若延迟任务先完成,直接返回false,表示超时。
  • 若查询任务先完成,再await获取结果(此时任务已完成,不会产生额外阻塞),最后按原逻辑判断返回值。
  • 原代码的if-else逻辑可简化为直接返回query != null,效果完全一致。

内容的提问来源于stack exchange,提问作者Buğra Balcı

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 21:05:19