C# 如何在后台工作定时器

C# 如何在后台工作定时器,c#,C#,我可以运行计时器,但它挂起,当我运行后台时,我需要在后台运行计时器。 谁能告诉我如何在后台运行计时器。 我的计时器代码是 btnIntraday.Enabled = false; btnStartBackfill.Enabled = false; btnStop.Enabled = true; if (btnIntraday.Text == "Intraday") { timerIntrad

我可以运行计时器,但它挂起,当我运行后台时,我需要在后台运行计时器。 谁能告诉我如何在后台运行计时器。 我的计时器代码是

        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)
        {

        }    
谁能告诉我如何在后台运行计时器。 提前感谢。

您可以使用

处理以运行计时器

处理以处理计时事件

处理以停止计时器。

您可以使用

处理以运行计时器

处理以处理计时事件


处理以停止计时器。

我想你说的是,你想设置背景代码,然后让它定期做一些工作。如果是这样的话,你需要一个定时器在后台代码而不是前端。这意味着在System.Timers,IIRC中使用不同的计时器类

我想你说的是,你想先设置背景代码,然后让它定期做一些工作。如果是这样的话,你需要一个定时器在后台代码而不是前端。这意味着在System.Timers,IIRC中使用不同的计时器类

如果您坚持让计时器在前端工作(虽然我不建议这样做,但我可以理解在某些情况下更容易),有一种方法(注意:我假设使用的是Windows窗体):

在以下代码中,有:

  • 引用System.Windows.Forms.timer对象实例的计时器
  • notifyIcon引用实例System.Windows.Forms.notifyIcon对象
  • MainWindow\u与窗体的Resize事件关联的Resize方法
  • notifyIcon\与notifyIcon的单击事件关联的单击方法
当用户最小化表单时执行调整块大小的方法(表单在桌面上的任何位置都不可见,并且将ShowInTaskBar设置为false也会从任务栏中隐藏它,因此它是有效隐藏的)

当用户单击通知图标时,窗体的窗口将恢复到原来的大小和位置,窗体将显示给用户

private void notifyIcon_Click(object sender, EventArgs e)
{
    notifyIcon.Visible = false;
    this.WindowState = FormWindowState.Normal;
    this.ShowInTaskbar = true;
    this.BringToFront();
    this.Activate();
}

如果您坚持让计时器在前端工作(虽然我不建议这样做,但我可以理解在某些情况下更容易),有一种方法(注意:我假定使用Windows窗体):

在以下代码中,有:

  • 引用System.Windows.Forms.timer对象实例的计时器
  • notifyIcon引用实例System.Windows.Forms.notifyIcon对象
  • MainWindow\u与窗体的Resize事件关联的Resize方法
  • notifyIcon\与notifyIcon的单击事件关联的单击方法
当用户最小化表单时执行调整块大小的方法(表单在桌面上的任何位置都不可见,并且将ShowInTaskBar设置为false也会从任务栏中隐藏它,因此它是有效隐藏的)

当用户单击通知图标时,窗体的窗口将恢复到原来的大小和位置,窗体将显示给用户

private void notifyIcon_Click(object sender, EventArgs e)
{
    notifyIcon.Visible = false;
    this.WindowState = FormWindowState.Normal;
    this.ShowInTaskbar = true;
    this.BringToFront();
    this.Activate();
}

我可以在后台运行,但不是自动运行running@voipservicesolution:你什么意思!??我需要在不挂起的情况下连续运行应用程序。有什么方法可以连续运行吗background@voipservicesolution:您在使用BackgroundWorker时遇到问题吗?这是我的背景代码btnIntraday.Enabled=false;btnStartBackfill.Enabled=false;btnStop.Enabled=true;txtInterval.Text=ddTimeInterval.Value.ToString();int inter=(int.Parse(txtInterval.Text))*乘以factorbackfill;请尝试{bgcuppldcx.RunWorkerAsync();}catch(Exception ex){}但它不会在计时器中连续运行,它会继续运行,但它会挂起。我可以在后台运行,但它不会自动运行running@voipservicesolution:你什么意思!??我需要在不挂起的情况下连续运行应用程序。有什么方法可以连续运行吗background@voipservicesolution:您在使用BackgroundWorker时遇到问题吗?这是我的背景代码btnIntraday.Enabled=false;btnStartBackfill.Enabled=false;btnStop.Enabled=true;txtInterval.Text=ddTimeInterval.Value.ToString();int inter=(int.Parse(txtInterval.Text))*乘以factorbackfill;请尝试{bgcuppldcx.RunWorkerAsync();}catch(Exception ex){}但它不会在计时器中连续运行,它会持续运行,但会挂起。我可以问一下该代码的作用吗?如何单独调用RunWorkerAsync()(递归的)?我能问一下这段代码是做什么的吗?如何单独调用RunWorkerAsync()(递归)?