C# 每30秒定时一次。但我想每12小时运行一个函数

C# 每30秒定时一次。但我想每12小时运行一个函数,c#,timer,C#,Timer,我有一个间隔30秒的C#service,该服务包含8种方法,现在我想要一种方法,在下午12点步行,只有1次 谢谢您是否尝试过: DateTime MethodsLastRunTime = DateTime.Now.AddHours(-1); ...SomeMethod () { if ((DateTime.Now.Hour == 12) && (MethodsLastRunTime < DateTime.Now)) { // Do stu

我有一个间隔30秒的C#service,该服务包含8种方法,现在我想要一种方法,在下午12点步行,只有1次

谢谢

您是否尝试过:

DateTime MethodsLastRunTime = DateTime.Now.AddHours(-1);

...SomeMethod () 
{
    if ((DateTime.Now.Hour == 12) && (MethodsLastRunTime < DateTime.Now))
    {
        // Do stuff  
        ....
        ....

        // Flag the method as run for today
        MethodsLastRunTime = DateTime.Now.AddHours(1);  
    }
}
DateTime方法slatruntime=DateTime.Now.AddHours(-1);
…方法()
{
if((DateTime.Now.Hour==12)和&(MethodsLastRunTime
如果是一项服务,为什么不使用Windows定时服务并配置为在需要时运行?与其通过代码来处理它,为什么不使用我们已经拥有的或者我遗漏了什么呢?调度一开始听起来很简单,但根据您的需要,很快就会变得复杂(错误处理、避免重复触发等)。您可以查看是否需要一个在代码中为您处理这些事情的库。是的,已经尝试过该方法,现在执行120次,因为计时器每30秒运行一次。最好使用调度程序。石英或内置窗户。如果在执行之后,但仍然是12,发生了一些错误,导致控制台应用程序/windows服务重新启动,则会使其执行两次。