在特定时间的运行方法

本文关键字:运行 方法 定时间 | 更新日期: 2023-09-27 18:04:10

我正在做一个Windows窗体(c#)的应用程序,我想在布局中设置一个用户定义给定小时的区域。

然后,当用户点击"开始"按钮时,每小时执行一个方法。

最简单的方法是什么?

在特定时间的运行方法

一个简单的WinForms Timer可以完成这项工作:

DateTime runTime;
public Form1() {
  InitializeComponent();
  DateTime nowTime = DateTime.Now;
  runTime = new DateTime(nowTime.Year, nowTime.Month, nowTime.Day, 12, 0, 0);
  timer1.Interval = 500;
}
void timer1_Tick(object sender, EventArgs e) {
  if (DateTime.Now > runTime) {
    timer1.Stop();
    MessageBox.Show("It's time!");
  }
}
void button1_Click(object sender, EventArgs e) {
  timer1.Start();
}

只需将runTime值更新为小时和/或分钟。警报显然不会被触发,除非程序正在运行。正如Hans所指出的,这将需要一个服务。

没有测试过,但是像这样?

var timer = new System.Timers.Timer((DateTime.Now - (DateTime.Now - TimeSpan.FromHours(DateTime.Now.Hour + 1))).Milliseconds);
timer.Elapsed += (sender, evt) =>
{
    timer.Interval = (DateTime.Now - (DateTime.Now - TimeSpan.FromHours(DateTime.Now.Hour + 1))).Milliseconds;
    // Do things
};
timer.Start();