漫谈C#的定时执行程序
生活随笔
收集整理的這篇文章主要介紹了
漫谈C#的定时执行程序
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1、寫法1 task的lambda表達式
#region 寫法1 task的lambda表達式
//static void Main()
//{
// // 創(chuàng)建并啟動兩個任務
// Task task1 = Task.Run(() => DoTask(1));
// Task task2 = Task.Run(() => DoTask(2)); // // 等待任務完成
// Task.WaitAll(task1, task2); // Console.WriteLine("所有任務已完成。");
// // Console.ReadLine();
//} //static void DoTask(int taskId)
//{
// Console.WriteLine("任務 {0} 正在執(zhí)行...", taskId);
// Thread.Sleep(2000); // 模擬任務執(zhí)行時間
// Console.WriteLine("任務 {0} 已完成。", taskId);
//}
#endregion
2、寫法2 async/await關鍵字
static async Task Main()
{
// 創(chuàng)建并啟動兩個任務
Task task1 = DoTaskAsync(1);
Task task2 = DoTaskAsync(2); // 等待任務完成
await Task.WhenAll(task1, task2); Console.WriteLine("所有任務已完成。");
Console.ReadLine();
} static async Task DoTaskAsync(int taskId)
{
Console.WriteLine("任務 {0} 正在執(zhí)行...", taskId);
await Task.Delay(2000); // 模擬任務執(zhí)行時間
Console.WriteLine("任務 {0} 已完成。", taskId);
}
3、寫法3 定時執(zhí)行 每天18點
#region 定時執(zhí)行 每天18點
static async Task Main()
{
Console.WriteLine("定時服務啟動(每天18點)!當前時間:{0}", DateTime.Now);
while (true)
{
// 計算當前時間距離下一個18點的時間間隔
DateTime now = DateTime.Now;
DateTime nextExecutionTime = new DateTime(now.Year, now.Month, now.Day, 18, 0, 0);
if (now >= nextExecutionTime)
{
nextExecutionTime = nextExecutionTime.AddDays(1);
}
TimeSpan timeUntilNextExecution = nextExecutionTime - now;
// 等待到下一個18點
await Task.Delay(timeUntilNextExecution);
// 執(zhí)行你的操作
Console.WriteLine("定時任務觸發(fā)了!當前時間:{0}", DateTime.Now);
}
}
#endregion
4、可以考慮使用第三方庫,如Quartz.NET,它提供了更豐富的定時調(diào)度功能。
當然還有很多其他寫法,歡迎討論指導
總結
以上是生活随笔為你收集整理的漫谈C#的定时执行程序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 6、Python基础语法
- 下一篇: hexo简易脚本