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

C# 如何实现代码每间隔5分钟循环执行一次?

C# 实现每5分钟循环执行代码的方案

完全可以实现,你可以通过异步循环+延迟等待的逻辑达成需求,因为你的现有代码是异步结构,推荐使用Task.Delay实现非阻塞等待,避免浪费线程资源。

修改后的完整代码

using System;
using System.Net.Http;
using System.Threading.Tasks;

namespace GetRespond
{
    class Program
    {
        // HttpClient声明为静态全局复用,避免频繁创建销毁的资源消耗
        private static readonly HttpClient client = new HttpClient();
        // 定义间隔时间,5分钟对应毫秒数为 5*60*1000 = 300000
        private const int IntervalMilliseconds = 300000;
        
        static async Task Main(string[] args)
        {
            Console.WriteLine("程序启动,将每5分钟请求一次目标地址");
            // 死循环实现永久重复执行
            while (true)
            {
                try
                {
                    await GetTodoItems();
                }
                catch (Exception ex)
                {
                    // 异常捕获避免单次请求失败导致整个程序崩溃
                    Console.WriteLine($"执行出错:{ex.Message}");
                }
                // 等待指定间隔时间后再执行下一次
                await Task.Delay(IntervalMilliseconds);
            }
        }

        private static async Task GetTodoItems()
        {
            string response = await client.GetStringAsync("MY_WEBSITE_URL");
            Console.WriteLine($"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}] 请求响应:{response}");
        }
    }
}

核心修改说明

  • 新增while(true)死循环包裹业务逻辑,实现永久重复执行
  • 使用Task.Delay(300000)实现5分钟的异步等待,不会阻塞主线程,比同步的Thread.Sleep更适配异步代码场景
  • 将HttpClient调整为静态全局实例,这是C#使用HttpClient的官方推荐实践,可避免频繁创建销毁实例导致的套接字资源耗尽问题
  • 新增异常捕获逻辑,避免单次网络请求超时、失败等异常直接导致整个程序崩溃
  • 新增时间戳打印,方便核对每次请求的执行时间

可选调整建议

  • 如果需要可手动终止程序运行,可在循环中添加终止判断逻辑,比如检测控制台输入、读取配置开关等
  • 5分钟的间隔时长可通过修改IntervalMilliseconds常量的数值自由调整

内容的提问来源于stack exchange,提问作者Depotys

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:09:00