如何在C#中的特定时间生成警报?

Mob*_*bin 27 c# clock winforms

如何在特定时间生成活动?例如,假设我想在上午8:00生成警报,通知我上午8:00(或在任何给定时间通知我当前时间的事件).

dtb*_*dtb 46

使用System.Threading.Timer类:

var dt = ... // next 8:00 AM from now
var timer = new Timer(callback, null, dt - DateTime.Now, TimeSpan.FromHours(24));
Run Code Online (Sandbox Code Playgroud)

callback代表将被称为下一次它是上午8:00,此后每隔24小时.

请参阅此SO问题,了解如何计算下一个上午8:00的事件.

  • 我知道跟随链接提到它,但可能想澄清那是System.Threading.Timer而不是System.Windows.Forms.Timer (4认同)

Thu*_*der 9

详细说明dtb的答案,这就是我实现它的方式.

  private void Form1_Load(object sender, EventArgs e)
    {
        System.Threading.TimerCallback callback = new TimerCallback(ProcessTimerEvent);

        //first occurrence at
        var dt = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 10, 0, 0);

        if (DateTime.Now < dt)
        {
            var timer = new System.Threading.Timer(callback, null, 
                                               //other occurrences every 24 hours
                            dt - DateTime.Now, TimeSpan.FromHours(24));
        }

    }

    private void ProcessTimerEvent(object obj)
    {
        MessageBox.Show("Hi Its Time");
    }
Run Code Online (Sandbox Code Playgroud)