日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

漫谈C#的定时执行程序

發(fā)布時間:2023/10/18 C# 501 如意码农
生活随笔 收集整理的這篇文章主要介紹了 漫谈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,它提供了更豐富的定時調度功能。

當然還有很多其他寫法,歡迎討論指導

總結

以上是生活随笔為你收集整理的漫谈C#的定时执行程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。