漫谈c#的定时执行程序 -尊龙游戏旗舰厅官网
尊龙游戏旗舰厅官网
收集整理的这篇文章主要介绍了
漫谈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,它提供了更丰富的定时调度功能。
当然还有很多其他写法,欢迎讨论指导
总结
以上是尊龙游戏旗舰厅官网为你收集整理的漫谈c#的定时执行程序的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇:
- 下一篇: