定时任务、间隔执行任务实现

摘要:
实现一:staticvoidMain(string[]args){//实现每隔两秒钟输出一次vart=0;vartimer=newSystem.Timers.Timer();timer.Interval=600000;//单位毫秒,这里是10分钟timer.Enabled=true;Console.WriteLine($"开始写入{DateTime.Now}");timer.Elapsed+=(o

实现一:

定时任务、间隔执行任务实现第1张

static void Main(string[] args)
        {
            //实现每隔两秒钟输出一次
            var t = 0;
            var timer = newSystem.Timers.Timer();
            timer.Interval = 600000;//单位毫秒,这里是10分钟
            timer.Enabled = true;
            Console.WriteLine($"开始写入{DateTime.Now}");
            timer.Elapsed += (o, a) =>{
                if (t == 0)
                {
                    Console.WriteLine($"写入{DateTime.Now}");
                }
                else{
                    //定时任务结束
timer.Stop();
                    timer.Enabled = false;
                }
            };

            timer.Start();
            Console.Read();
        }

实现二: 其实和实现一类似

    static protected voidSetOndDayTimer()
        {
            Console.WriteLine($"我是定时任务-------{DateTime.Now}");
            System.Timers.Timer timer = new System.Timers.Timer(60000);//周期调用方法间隔时间ms
            timer.Elapsed += new System.Timers.ElapsedEventHandler(Update);//绑定事件方法
            timer.AutoReset = true;//设置一直循环调用;若设置timer.AutoReset = false;只调用一次绑定方法
            timer.Start();//开启定时器事件或者写成timer.Enabled = true;
}

        static private void Update(objectsender, ElapsedEventArgs e)
        {
            Console.WriteLine($"定时任务执行-------{DateTime.Now}");
        }

实现三:此方法只适合在循环中使用属于间隔执行(此方法只能在60秒以内的条件且不包含60秒,超过60s,span.Seconds又从1开始计算了)

            //实现每隔两秒钟输出一次
            Console.WriteLine($"开始写入{DateTime.Now}");
            DateTime ProgramRunTime = DateTime.Now;//第一次执行的时间
            DateTime ThreadTime = DateTime.Now;//当前执行时间
            TimeSpan span = ThreadTime -ProgramRunTime;
            if (span.Seconds > 2)//每隔2秒执行一次
{
                Console.WriteLine($"写入{DateTime.Now}");
            }        
            Console.Read();

实现四:

//延迟调用
DelayInvoke(() =>{
            //DO
       }, 1800);
 
//定时调用
RegularInvoke(() =>{
            //DO
       }, 1800);
/// <summary>
        ///延迟调用
        /// </summary>
        /// <param name="method"></param>
        /// <param name="delayTime"></param>
        public static void DelayInvoke(Action method, int delayTime = 2000)
        {
            RegularInvoke(method, delayTime, false);
        }
 
        /// <summary>
        ///定时调用
        /// </summary>
        /// <param name="method"></param>
        /// <param name="delayTime"></param>
        /// <param name="aotoReset"></param>
        public static void RegularInvoke(Action method, int delayTime, bool aotoReset = true)
        {
            System.Timers.Timer timer = newSystem.Timers.Timer(delayTime);
            timer.Elapsed += new System.Timers.ElapsedEventHandler((a, b) =>{
                method();
            });
            //执行一次 false
            timer.AutoReset =aotoReset;
            //是否执行System.Timers.Timer.Elapsed事件 
            timer.Enabled = true;
        }

或者

           Console.WriteLine($"执行1{DateTime.Now}");
            Task.Factory.StartNew(() =>{
                Console.WriteLine($"执行2{DateTime.Now}");
                Task.Delay(10000).Wait();
                Console.WriteLine($"延迟执行{DateTime.Now}");
            });          
            Console.ReadKey();

免责声明:文章转载自《定时任务、间隔执行任务实现》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇基于canvas+webrtc 实现流式渲染 1设置Linux shell超时自动退出下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

WinForm 中 comboBox控件之数据绑定

作为列表类型,public class Info{public string Id{get;Name=“Li Si”};infoList.Add(info3);...

【转】 中兴OLT-C300常用命令

在当前的C220版本中,ONU类型名称在GPON和EPON中应该是唯一的。这里我们使用“ZTEG-F620”。ZXAN#ponZXAN#onu-typegponZTEG-F620描述4ETH,2POTSZXAN#onu-ifZTEG-F620eth_0/1-4ZXAN#onon-ifZTEG-F620pots_0/1-2ZXAN#on u type attr...

GitLab的基础使用-创建用户(users)

否则,将追究法律责任。1、 以管理员身份登录GitLab的WebUI,并创建用户1˃使用管理员登录GitLab。管理员登录成功后,点击下图所示的小扳手,然后点击进入管理员的Dashboard界面。如果时间间隔过长,可以要求运维人员重置密码。操作和维护人员可以参考第一步来重置用户的密码。实际上,您也可以通过参考第三步中的方法找到自己的密码,而不必麻烦操作和维护...

浅谈JEECG多数据源的使用

首先,我们将简要介绍JEECG是什么。JEECG主张简单的功能由代码生成器直接生成,复杂的业务由表单定制,业务流程由工作流实现和扩展,开发人员编写特殊的业务逻辑。让我们重点讨论JEECG3.5GA中多个数据源的使用。JEECG3.5提供多个数据源的功能。JEECG多数据源的设计直接使用Springjdbc连接,独立于Hibernate、Mybatis和其他持...

H3C交换机如何配置管理VLAN

1.输入“系统视图”(缩写为“sys”)进入系统配置模式[H3C]...

【转载】 银河麒麟V10系统安装U盘制作

在制作U盘安装盘的过程中,Kylin系统的ISO映像文件比较大,因此很耗时。创建完成后,“写入硬盘映像”对话框将自动关闭。...