C#Windows Form在特定时间运行的方法

时间:2014-05-20 15:28:47

标签: c# windows-forms-designer

我正在使用Windows窗体(C#)进行应用程序,我想在布局中设置用户定义给定小时的区域。

然后,当用户点击“开始”按钮时,每个给定的小时执行一个方法。

最简单的方法是什么?

此致

2 个答案:

答案 0 :(得分:1)

一个简单的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值。除非程序正在运行,否则警报显然不会被触发。汉斯指出,这需要一项服务。

答案 1 :(得分:0)

未经测试,但有类似的事情?

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();