C# 如何使服务应用程序每年在特定日期运行一次?

C# 如何使服务应用程序每年在特定日期运行一次?,c#,.net,datetime,service,C#,.net,Datetime,Service,我想让C#windows服务应用程序每年只运行一次,而不是每天运行一次 这必须每年在同一日期和同一时间发生。 例如: 日期必须是3月31日,时间应该是23:59 我正试图从App.config文件中执行此操作 <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> </startup&

我想让C#windows服务应用程序每年只运行一次,而不是每天运行一次

这必须每年在同一日期和同一时间发生。 例如: 日期必须是3月31日,时间应该是23:59 我正试图从
App.config
文件中执行此操作

<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
  <appSettings>
    <add key ="Mode" value ="YEARLY"/>
    <!-- <add key ="Mode" value ="Interval"/>-->
    <add key ="IntervalMinutes" value ="1"/>
    <add key ="ScheduledTime" value ="23:59:00"/>
    <add key = "ScheduledDate" value =""/>
  </appSettings>
</configuration>


我想让它在上述日期和时间发生。我怎样才能做到这一点?提前感谢…

制作一个带有计时器的服务,每x秒检查一次当前时间+x秒是否大于目标时间。一旦这个神奇的时刻被触发,做你想做的事情,然后服务会在365天内回到“检查时间”


显然,计划任务是一个更明智的解决方案,但敏感度并不总是与外部要求兼容:)

控制台应用程序+计划任务似乎是一种更好的方法。您应该使用一些日期和时间,这些日期和时间可能一年发生一次以上(由于夏令时)。这些情况下会发生什么?我强烈反对@Rahul。OP希望每年运行一次。我建议他/她对边缘案例进行思考。有数百种方法可以解决这个问题,但知道正确的解决方案部分取决于知道在边缘情况下应该发生什么(它应该在早上6点运行,因为它运行是关键,还是不应该,因为它恰好在凌晨4点运行是关键)。OP说它是在服务器上运行的。那没用,真的。因为服务器机器崩溃,或者AWS杀死它们,或者它们需要用Windows Update更新。如果是你的服务器,另一个选择是在你的手机日历中设置提醒并手动运行。我总是觉得有必要检查每年执行的任务。