2011-05-11 110 views
0


我在連續運行應用程序時沒有掛起(附加數據)問題。
我想運行此代碼而不會掛在後臺每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"; 
     } 
    } 
+0

嘗試增加時間間隔。請提供錯誤消息,如果您在後臺工作中獲得任何 –

回答

1

你不得不使用BackgroundWorker

將導致UI懸掛的過程(Timer1_Tick在您的代碼中)放入DoWork(object sender, DoWorkEventArgs e)方法中,並通過調用RunWorkerAsync調用它。
有在http://www.dotnetperls.com/backgroundworker

切記不要在DoWork方法使用任何線程特定變量一個很好的教程。您必須將它們作爲參數傳遞給該方法。

UPDATE:這裏是你的代碼應該是什麼樣子:
未測試

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. 
    } 
+0

它不附加 – voipservicesolution

+0

您可以修改我的代碼並顯示我應該更改它的位置plz – voipservicesolution

+0

其不工作 – voipservicesolution

1

或者,你可以實現它爲Windows服務,這將在您的系統的背景下沒有表現出明確的運行。在主線程中,您可以執行5秒延遲所需的操作。

+0

我創建此代碼的Windows窗體應用程序不適用於Windows服務 – voipservicesolution