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. Taurus .Net Core 微服务开源框架:Admin 插件【4-2】 - 配置管理-Mvc【含请求日志打印】

    前言: 继上篇:Taurus .Net Core 微服务开源框架:Admin 插件[4-1] - 配置管理-Kestrel[含https启用] 本篇继续介绍下一个内容: 1.系统配置节点:Mvc 配置 ...

  2. 今天做php缓存发现一个批量替换非法关键词的php代码

    <?php $badwords = array('aa', 'bb'); // 敏感词数组 $str = "aa阿斯顿克拉拉斯柯达bb阿萨达速度"; $result = fi ...

  3. 工作中必备的12个Git命令

    前言 以下是工作中必备的12个Git命令,包括创建和初始化仓库.克隆远程仓库.添加和提交文件.查看状态和历史记录.创建和切换分支.合并分支以及推送和拉取远程仓库等操作.掌握这些命令可以帮助你进行基本的 ...

  4. SQL Server 根据一个表数据修改另外一个表数据

    今天在写代码的时候发现一个有趣的问题,同时也暴露了之前写的代码有问题,还好之前没有出现重复的情况,及时发现了这个问题,及时改了回来,不然就GG了 下面先上代码,再给大家解说一下 CREATE TABL ...

  5. win10系统网络图标变成一个地球模型并且无法连上网络

    最近在家远程办公,但是遇到个很棘手的问题,电脑突然连不上无线网络了.... 无线网络图标变成地球模型如下:

  6. 【Linux】部署Nginx

    1.先安装gcc-c++编译器 yum install gcc-c++ yum install -y openssl openssl-devel 2.再安装pcre包 yum install -y p ...

  7. Redis的设计与实现(2)-链表

    链表在 Redis 中的应用非常广泛, 比如列表键的底层实现之一就是链表: 当一个列表键包含了数量比较多的元素, 又或者列表中包含的元素都是比较长的字符串时, Redis 就会使用链表作为列表键的底层 ...

  8. python: 判断是否是某一类型

    函数isinstance 语法 isinstance(object, classinfo) 参数 object -- 实例对象. classinfo -- 可以是直接或间接类名.基本类型或者由它们组成 ...

  9. html表格基本标签

    1.<table>表签 <table>...</table>标签用于在html文档中后创建表格.它包含表名和表格本身内容的代码. 2.<tr>标签 &l ...

  10. 构建易于运维的 AI 训练平台:存储选型与最佳实践

    伴随着公司业务的发展,数据量持续增长,存储平台面临新的挑战:大图片的高吞吐.超分辨率场景下数千万小文件的 IOPS 问题.运维复杂等问题.除了这些技术难题,我们基础团队的人员也比较紧张,负责存储层运维 ...