漫谈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#的定时执行程序的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 6、Python基础语法
- 下一篇: .net(C#)常见面试题