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#的定时执行程序的更多相关文章

  1. .NET System.Timers.Timer的原理和使用(开发定时执行程序)

    概述(来自MSDN) Timer 组件是基于服务器的计时器,它使您能够指定在应用程序中引发Elapsed 事件的周期性间隔.然后可以操控此事件以提供定期处理.例如,假设您有一台关键性服务器,必须每周7 ...

  2. 定时执行程序-Quartz简单实例

    1.加jar包:Quartz自己quartz-1.8.3.jar和依赖包commons-logging.jar  .slf4j-log4j12-1.5.10.jar .slf4j-api-1.5.10 ...

  3. java 原生定时执行程序(ScheduledExecutorService)

    package ThreadPoolTest; import java.util.Date; import java.util.concurrent.*; public class Main { pu ...

  4. delphi 多线程定时执行程序如何写

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  5. IIS7.0 Appcmd 命令详解和定时重启应用池及站点的设置

    IIS7.0 Appcmd 命令详解 废话不说!虽然有配置界面管理器!但是做安装包的时候命令创建是必不可少的!最近使用NSIS制作安装包仔细研究了一下Appcmd的命令,可谓是功能齐全. 上网查了些资 ...

  6. js页面用定时任务通过AJAX获取后台数据,但是从这个页面跳转到其他页面后,定时任务仍然在定时请求后台

    setInterval(function(){//ajax 请求后台数据},1000);这个是A页面的定时器然后我在A页面通过其他请求跳转到其他页面之后后台发现A页面的定时器的那个请求仍然在执行为什么 ...

  7. 基于python网络编程实现支持购物、转账、存取钱、定时计算利息的信用卡系统

    一.要求 二.思路 1.购物类buy 接收 信用卡类 的信用卡可用可用余额, 返回消费金额 2.信用卡(ATM)类 接收上次操作后,信用卡可用余额,总欠款,剩余欠款,存款 其中: 1.每种交易类型不单 ...

  8. linux定时执行任务

    (1)Linux下如何定时执行php脚本?(2)Linux下如何设置定时任务?(3)Crontab定时执行程序 核心提示:键入 crontab -e 编辑crontab服务文件 分为两种情况:(还有一 ...

  9. linux定时执行任务 转

    转自:http://www.cnblogs.com/thinksasa/archive/2013/06/06/3121030.html linux定时执行任务   (1)Linux下如何定时执行php ...

  10. [MVC框架]利用@Scheduled注解创建定时执行的程序

    新写的项目中有一个地方要用到定时器,然后就用了spring的@Scheduled注解,顺手就给记录下来了,免得下次用的时候还要翻以前的项目,顺便分享出来,给没用过的兄弟姐妹们做个参考. 这次主要用的是 ...

随机推荐

  1. unity前后端通信

    1. 配置请求体中的Json字符串 1 request_data = new RequestBodyClass(); 2 request_data.a = "Json第一个字段"; ...

  2. 正确处理 CSV 文件的引号和逗号

    CSV(Comma-Separated Values,逗号分割值),就是用纯文本的形式存储表格数据,最大的特点就是方便. 作为开发,我们经常面临导数据的问题,特别是后台系统,产品或者运营的同事常常会提 ...

  3. linux 脚本:iptables-nat.sh

    #!/bin/bash # 2022.2.28 by dewan # DNAT configuration. iptables -t nat -F PUB_IFACE="enp125s0f0 ...

  4. Cilium 系列-7-Cilium 的 NodePort 实现从 SNAT 改为 DSR

    系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能.但是通过对 Cilium 不同模式的切换/功能的启用,可以 ...

  5. openpyxl 设置某列单元格样式

    1 # 边框线 2 border_set = Border(left=Side(border_style='thin', color='000000'), 3 right=Side(border_st ...

  6. 数据处理的那些事「GitHub 热点速览」

    撇开一屏占四分之三屏幕的 AI 相关项目之外,本周剩下的热榜项目就是同数据有关的数据库项目,比如 CockroachDB 团队开源的 kv 存储数据库 pebble,旨在提供高性能的消息队列 blaz ...

  7. docker下nginx配置

    一步一坑安装docker  nginx 首先选择适当版本镜像下载 我选的: nginx:1.16.0 docker pull nginx:1.16.0 安装完毕之后创建挂载文件夹 : mkdir /u ...

  8. 应用层协议之DNS、DHCP

    运输层为应用进程提供了端对端的通信服务,但不同的网络应用的应用进程之间,还需要有不同的通信规则.因此在运输层协议之上,还需要有应用层协议. 应用层中有这些常见的协议 域名系统:DNS 动态主机配置:D ...

  9. 【python】调用钉钉机器人发起通知

    有时候需要做个某些服务的状态监控,用钉钉机器人发通知挺方便的.可以用shell脚本配合crontab检测状态,检测到异常就调用python脚本发起告警. python内容 此处用的python3,需要 ...

  10. Programming abstractions in C阅读笔记:p123-p126

    <Programming Abstractions In C>学习第50天,p123-p126,总结如下: 一.技术总结 1.notaion 这也是一个在计算机相关书籍中出现的词,但有时却 ...