如何连续运行应用程序而不挂在后台

时间:2011-05-11 11:44:27

标签: c# winforms


我在连续运行应用程序时遇到问题而没有挂起(附加数据) 我想运行此代码而不是每5秒钟挂在后台。

我的代码是:

    public void Button1_Click(System.Object sender, System.EventArgs e)
    {
        if (Button1.Text == "Start")
        {
            Timer1.Interval = 5000;
            Timer1.Enabled = true;
            Button1.Text = "Stop";
        }
        else if (Button1.Text == "Stop")
        {
            Timer1.Enabled = false;
            Button1.Text = "Start";
        }
    }

2 个答案:

答案 0 :(得分:1)

您必须使用BackgroundWorker

将导致用户界面悬挂的进程(代码中的Timer1_Tick)置于DoWork(object sender, DoWorkEventArgs e)方法中,并通过调用RunWorkerAsync调用它。
http://www.dotnetperls.com/backgroundworker

上有一个很好的教程

请记住,不要在DoWork方法中使用任何特定于线程的变量。您必须将它们作为参数传递给方法。

更新:以下是您的代码应该是什么样的:
未经测试

public void Timer1_Tick(System.Object sender, System.EventArgs e)
  {
  var bgw = new BackGroundWorker();
  bgw.DoWork += new DoWorkEventHandler(bgw_DoWork);
  }  

void bgw_DoWork(object sender, DoWorkEventArgs e)
  {
  // Put you try-catch block here.
  }

答案 1 :(得分:1)

或者,您可以将其实现为Windows服务,该服务将在您的系统后台运行,而不会显式显示。在主线程中,您可以执行5秒延迟所需的操作。