欢迎访问 生活随笔!

ag凯发k8国际

当前位置: ag凯发k8国际 > 编程语言 > c# >内容正文

c#

漫谈c#的定时执行程序 -ag凯发k8国际

发布时间:2023/10/18 c# 167 如意码农
ag凯发k8国际 收集整理的这篇文章主要介绍了 漫谈c#的定时执行程序 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1、写法1 task的lambda表达式

 #region 写法1 task的lambda表达式
//static void main()
//{
// // 创建并启动两个任务
// 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} 正在执行...", taskid);
// thread.sleep(2000); // 模拟任务执行时间
// console.writeline("任务 {0} 已完成。", taskid);
//}
#endregion

  2、写法2 async/await关键字

        static async task main()
{
// 创建并启动两个任务
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} 正在执行...", taskid);
await task.delay(2000); // 模拟任务执行时间
console.writeline("任务 {0} 已完成。", taskid);
}

  3、写法3 定时执行 每天18点

 #region 定时执行 每天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); // 执行你的操作
console.writeline("定时任务触发了!当前时间:{0}", datetime.now);
}
} #endregion

  4、可以考虑使用第三方库,如quartz.net,它提供了更丰富的定时调度功能。

当然还有很多其他写法,欢迎讨论指导

总结

以上是ag凯发k8国际为你收集整理的漫谈c#的定时执行程序的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得ag凯发k8国际网站内容还不错,欢迎将ag凯发k8国际推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图