如何在后台工作计时器
本文关键字:工作 计时器 后台 | 更新日期: 2023-09-27 17:55:56
我可以运行计时器,但它挂起了,当我运行后台时,我需要计时器在后台运行。谁能告诉我如何在后台运行计时器。我的计时器代码是
btnIntraday.Enabled = false;
btnStartBackfill.Enabled = false;
btnStop.Enabled = true;
if (btnIntraday.Text == "Intraday")
{
timerIntraday.Interval = 5000;
timerIntraday.Enabled = true;
btnIntraday.Text = "Updating..";
}
else if (btnIntraday.Text == "Updating..")
{
timerIntraday.Enabled = false;
btnIntraday.Text = "Intraday";
}
我的后台代码是
btnIntraday.Enabled = false;
btnStartBackfill.Enabled = false;
btnStop.Enabled = true;
txtInterval.Text = ddTimeInterval.Value.ToString();
int inter = (int.Parse(txtInterval.Text)) * multiplyingFactorBackfill;
try
{
bgBackfillDCX.RunWorkerAsync();
}
catch (Exception ex)
{
}
任何人都可以告诉我如何在后台运行计时器。提前谢谢。
您可以使用
BackgroundWorker。
处理 BackgroundWorker.DoWork 以运行计时器。
处理 BackgroundWorker。ProgressChanged 以处理计时事件。
处理 BackgroundWorker.RunWorkerComplete以停止计时器。
我想你的意思是你想设置后台代码,然后让IT定期做一些工作。如果是这样,您需要在后台代码而不是前端中使用计时器。这意味着使用不同的计时器类 - 在System.Timers,IIRC中。 系统.定时器.定时器
如果您坚持让计时器在前端工作(虽然我不推荐它,但我可以理解它在某些情况下更容易),有一种方法(注意:我认为使用 Windows 窗体):
在下面的代码中,有:
- 引用 System.Windows.Forms.Timer 对象的实例的计时器
- 一个 notifyIcon 引用实例 System.Windows.Forms.NotifyIcon 对象
- MainWindow_Resize与窗体的调整大小事件关联的方法
- notifyIcon_Click与通知图标的单击事件关联的方法
当用户最小化表单时,将执行 resize 方法 if-block(表单在桌面的任何地方都不可见,将 ShowInTaskBar 设置为 false 也会将其从任务栏中隐藏,因此它被有效地隐藏了)。
private void MainWindow_Resize(object sender, EventArgs e)
{
if (WindowState == FormWindowState.Minimized)
{
this.ShowInTaskbar = false;
notifyIcon.Visible = true;
}
}
当用户单击通知图标时,表单的窗口将恢复到其以前的大小和位置,并将表单呈现给用户
private void notifyIcon_Click(object sender, EventArgs e)
{
notifyIcon.Visible = false;
this.WindowState = FormWindowState.Normal;
this.ShowInTaskbar = true;
this.BringToFront();
this.Activate();
}