每天固定时间运行Task 扫描任务

When you want to make some delay in running code you can use Task.Delay(TimeSpan interval) method . This method is similar to Thread.Sleep, but it is nicer. The argument of the method represent TimeSpan type. For example if you want to wait 5 second you can call the following code:

Task.Delay(TimeSpan.FromSeconds(5));

Or you want to wait 2 hours:

Task.Delay(TimeSpan.FromHourss(2));

You can easily use Task.Delay to run some code at certain time. For example you want to run some method every day at 1:00:00 AM. To implement this example you can use Task.Delay method on the following way:
First Convert the time in to DateTime type. Make diference between now and the time you want to run the code. Call Delay method with TimeSpan of previous time interval. The following code solve this problem:

class Program    {        static void Main(string[] args)        {            //Time when method needs to be called            var DailyTime = "01:00:00";            var timeParts = DailyTime.Split(new char[1] { ‘:‘ });

            var dateNow = DateTime.Now;            var date = new DateTime(dateNow.Year, dateNow.Month, dateNow.Day,                       int.Parse(timeParts[0]), int.Parse(timeParts[1]), int.Parse(timeParts[2]));            TimeSpan ts;            if (date > dateNow)                ts = date - dateNow;            else            {                date = date.AddDays(1);                ts = date - dateNow;            }

            //waits certan time and run the code            Task.Delay(ts).ContinueWith((x)=> SomeMethod());

            Console.Read();        }

        static void SomeMethod()        {            Console.WriteLine("Method is called.");        }    }

If you want that code to run every day, just put it in while loop.

Happy programming.

原文地址:https://www.cnblogs.com/dusf/p/12231856.html

时间: 2024-10-23 08:29:43

每天固定时间运行Task 扫描任务的相关文章

iOS开发:后台运行以及保持程序在后台长时间运行

第一部分 1.先说说iOS 应用程序5个状态: 停止运行-应用程序已经终止,或者还未启动. 不活动-应用程序处于前台但不再接收事件(例如,用户在app处于活动时锁住了设备). 活动-app处于“使用中”的状态. 后台-app不再屏幕上显示,但它仍然执行代码. 挂起-app仍然驻留内存但不再执行代码. 按下Home键时,app从活动状态转入后台,绝大部分app通常在几秒内就从后台变成了挂起. 在内存吃紧的时候,iphone会首先关闭那些挂起的app. 从 iOS 4 开始,应用就可以在退到后台后,

C#固定时间执行指定事件(观察者模式+异步委托)

最近有个项目需要每天固定的时间去执行指定的事件,发现网上关于这样的文章比较少,而且比较散.通过学习了几篇文章后终于实现了这个功能,在此也特别感谢这些文章的作者们,这也是我第一次在园子里面发文章,望多指教. 关于观察者模式,我在这里就不做讲解了,如有不懂,可以参考相关文章. 那么开始入正题. 主要有三个页面:Observer.cs(观察者).Subject.cs(通知者).Form1.cs Observer.cs class Observer { /// <summary> /// 执行事件A

防止shell脚本长时间运行导致ssh超时

在一些对安全性要求较高的场景下,ssh的超时时间是管理员预先设置好的,在闲置一段时间后ssh连接会自动断开.这种情况下如果通过ssh执行脚本,而脚本运行时间又比较长的话,会导致ssh客户端和服务器长时间无交互而超时,命令执行失败. 使用bash子进程可以解决这种问题,思路是由子进程执行具体的逻辑代码,而由主进程来监控子进程的执行状态,同时向控制台输出字符来keep alive. bash创建子进程有多重方式,这里使用"()",然后用"&"将其放在后台执行.虽

JavaScript 倒计时(截止某日期的倒计时和截止每晚12点的倒计时以及固定时间倒计时)

截止某日期的倒计时和截止每晚12点倒计时: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> </head> <body> <h1 id="divTime"></h1> </body> <script type="text/javascript&qu

定时器解决js长时间运行脚本问题

javascript 一般地,单个js操作的运行时间不应超过100毫秒,否则的话,会影响用户体验,用户会认为自己与界面失去联系.而对于一些复杂的任务,可能无法在100ms内完成,甚至会突破浏览器限制(调用栈大小限制和长时间运行限制).其中,长时间运行限制的衡量有执行语句的数量和执行语句的时间. 因此,针对复杂任务,要想不影响用户体验,就需要借助定时器. 使用定时器可以让出UI线程的控制权,停止执行javascript,使得UI线程有机会更新,然后隔一段时间后在执行javascript代码. fu

发布Apache Hadoop 2.6.0——异构存储,长时间运行的服务与滚动升级支持

发布Apache Hadoop 2.6.0--异构存储,长时间运行的服务与滚动升级支持 我很高兴地宣布,在Apache的Hadoop社区已经发布的Apache Hadoop的2.6.0:http://markmail.org/message/gv75qf3orlimn6kt! 特别是,我们很高兴在此版本中相关的三个主要片:异构存储在HDFS使用SSD和内存层,支持长时间运行在YARN服务和滚动升级,将升级您的集群软件,然后重新启动升级的节点而无需关闭群集或丢失正在进行的工作.YARN作为其架构中

第十六章——处理锁、阻塞和死锁(1)——确定长时间运行的事务

原文:第十六章--处理锁.阻塞和死锁(1)--确定长时间运行的事务 前言: 事务是OLTP系统中的主要部分.它管理数据一致性和数据并发问题,当多个资源同时被读取或者修改相同数据时,SQLServer会通过锁定机制来确保数据库中的数据总是处于一个有效状态.在SQLServer中,锁管理器是负责实现这些锁机制.SQLServer对于不同的资源类型提供不同的锁类型,如数据库.文件.对象.表.区.页和键. 当你使用事务时,依然会遇到由事务引起的问题,这些通常是由于锁.阻塞和死锁引起的. 本系列将讲解这三

Linux中长时间运行程序的方法

一.场景: 如果临时有一个命令需要长时间运行,比如 python hello.py ,什么方法能最简便的保证它在后台稳定运行呢?解决方法:      当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程.因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程. 二.nohup nohup 无疑是我们首先想到的办法.顾名思义,nohup 的用途就是让提交的命令忽略 hangup 信号.只

保持程序在后台长时间运行-b

iOS为了让设备尽量省电,减少不必要的开销,保持系统流畅,因而对后台机制采用墓碑式的“假后台”.除了系统官方极少数程序可以真后台,一般开发者开发出来的应用程序后台受到以下限制:1.用户按Home之后,App转入后台进行运行,此时拥有180s后台时间(iOS7)或者600s(iOS6)运行时间可以处理后台操作2.当180S或者600S时间过去之后,可以告知系统未完成任务,需要申请继续完成,系统批准申请之后,可以继续运行,但总时间不会超过10分钟.3.当10分钟时间到之后,无论怎么向系统申请继续后台