Csharp/C#教程:C#如何在一天中的特定时间触发事件?分享


C#如何在一天中的特定时间触发事件?

我正在开发一个程序,需要在一天中的某个小时删除一个文件夹(然后重新实例化),这个小时将由用户给出。

小时很可能是在夜间,因为没有人访问该文件夹(它在工作时间以外)。 有没有办法在某个时刻触发该事件?

我知道计时器,但有没有一个更简单的方法来做这个没有计时器,滴答和检查,看看它是什么时间?

编辑 :也许我不够具体。 我想触发一个方法来做某事,而不必先在一个单独的可执行文件中编译它。 此方法是作为Windows服务实现的更大类的一部分。 所以这项服务会持续运行,但是在一天的某个特定时间,它应该触发此function来删除该文件夹。

谢谢。

打破常规思考问题。

不需要在这种工作上编码 – 使用计划任务 ,他们已经在Windows中使用了很长时间。 你可以从这开始你的程序。

更新 :(更新后的问题)

如果需要从已在运行的服务中触发方法,请使用计时器并针对目标时间测试DateTime.Now

使用Windows计划程序。 在那里你可以具体说明何时执行哪个文件。

如果要在代码中执行此操作,则需要使用Timer类并触发Elapsed事件。

A.计算第一次运行时间。

 TimeSpan day = new TimeSpan(24, 00, 00); // 24 hours in a day. TimeSpan now = TimeSpan.Parse(DateTime.Now.ToString("HH:mm")); // The current time in 24 hour format TimeSpan activationTime = new TimeSpan(4,0,0); // 4 AM TimeSpan timeLeftUntilFirstRun = ((day - now) + activationTime); if(timeLeftUntilFirstRun.TotalHours > 24) timeLeftUntilFirstRun -= new TimeSpan(24,0,0); // Deducts a day from the schedule so it will run today. 

B.设置计时器事件。

 Timer execute = new Timer(); execute.Interval = timeLeftUntilFirstRun.TotalMilliseconds; execute.Elapsed += ElapsedEventHandler(doStuff); // Event to do your tasks. execute.Start(); 

C.设置方法执行您想要执行的操作。

  public void doStuff(object sender, ElapsedEventArgs e) { // Do your stuff and recalculate the timer interval and reset the Timer. } 

什么时候

计算剩余时间(以毫秒为单位)并设置定时器间隔。

可能的起点或指南: NCrontab

Scheduled Task的编程接口是基于COM的,因此从.NET中使用它应该相对容易(尽管我从未尝试过)。

上述就是C#学习教程:C#如何在一天中的特定时间触发事件?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/955988.html

(2)
上一篇 2021年11月22日
下一篇 2021年11月22日

精彩推荐