C#-使用委托每小时在同一时间运行一个方法

本文关键字:方法 一个 运行 同一时间 每小时 C#- | 更新日期: 2023-09-27 18:21:52

可能重复:
在给定的时间间隔中运行代码

我有一个按小时运行的方法。我现在这样做:

while (true)
{
        string rightNow = DateTime.Now.ToString("mm");
        if (rightNow == "00")
        {
            RunMyMethod();
        }
        Thread.Sleep(10000);
}

一位朋友可靠地告诉我,我是个白痴(通常是个坏人),我应该利用活动和代表来做这件事。我明白了,在任何方法的范围之外,我需要声明一个与我的方法具有相同返回类型和相同输入参数的委托,如下所示:

public delegate void MyMethodsDelegate();

然后,当我想使用我的委托时,我以与实例化类相同的方式实例化它,如下所示:

MyMethodsDelegate foobar = new MyMethodsDelegate(RunMyMethod);

然后我可以这样调用我的代理:

foobar.Invoke();

好的,我有我的代理设置,活动怎么样?我想创建的事件是"现在是x点钟",然后每次都是x点钟,这就启动了我的代理

此外,我是否正确设置了我的代理?

感谢

C#-使用委托每小时在同一时间运行一个方法

您可以使用System.Timers.Timer类,该类异步执行委托,并在经过给定时间间隔时引发Elapsed事件。我强烈建议您阅读Timer类的MSDN备注部分,请参阅此处。

System.Timers.Timer timer = new Timer(60 * 60 * 100);

案例1:订阅匿名方法

timer.Elapsed += (s, e) =>
    {
        // callback code here
    };

案例2:订阅明确定义的委托

ElapsedEventHandler handler = (s, e) =>
    {
        // callback code here
    };
timer.Elapsed += handler;

案例3:订阅现有方法

timer.Elapsed += this.OnHourElapsed;
private void OnHourElapsed(object sender, EventArgs args)
{
    // callback code here
}

然后最后只需启动一个定时器

timer.Start();