2014-02-18 53 views
0

我有一個獨立的Windows應用程序,它基於特定的用戶定義間隔自動刷新。一切都很好,只有當應用程序在後臺並且我已經在桌面上打開其他東西時,應用程序纔會停止自動刷新。Windows Stand Alone應用程序在移入後臺時停止自動刷新

我正在使用刷新時間。這是代碼。

Global.DateTime值將獲得先前刷新的值。

Global.DateTime = Global.DateTime; 
double Minutes = Convert.ToDouble(Global.dictionary["WebserviceIntervalMins"].ToString()); DateTime refreshDate = Global.DateTime.AddMinutes(Minutes); 
lblRefresh.Text = refreshDate.ToString(); 

public void InitTimer() 
{ 
    int interv = Convert.ToInt32(Global.dictionary["WebserviceIntervalMins"].ToString()) * 60000; // Get the interval time from config file and convert minutes into milliseconds 
    timer1 = new System.Windows.Forms.Timer(); 
    timer1.Tick += new EventHandler(timer1_Tick); 
    timer1.Interval = interv; // in miliseconds 
    timer1.Start(); 
} 
+1

你是什麼意思「自動刷新」?你在使用計時器嗎?請顯示一些代碼。 –

+0

@mrlucmorin是的,我正在使用刷新時間。這是代碼。 Global.DateTime值將獲得先前刷新的值。 Global.DateTime = Global.DateTime; double Minutes = Convert.ToDouble(Global.dictionary [「WebserviceIntervalMins」]。ToString()); DateTime refreshDate = Global.DateTime.AddMinutes(Minutes); lblRefresh.Text = refreshDate.ToString(); –

+0

請用您的任何相關代碼更新您的原始問題。不要對此使用評論。 –

回答

-1

你可以使用類似的東西嗎?

bool isRunning = true; 
    Thread th = new Thread(delegate() 
    { 
     while(isRunning) 
     { 
      BeginInvoke((Action)delegate() 
      { 
       //do refresh 
      }); 
      int Minutes = Convert.ToInt(Global.dictionary["WebserviceIntervalMins"].ToString()); 
      Thread.Sleep(Minutes * 60000); 
     } 
    }); 
    th.IsBackground = true; 
    th.Start(); 
+0

這只是一個壞建議,無限循環與'Thread.Sleep'循環幾乎從來都不是正確的答案。 –

+0

@ScottChamberlain誰說無限?常識意味着當需要時,運行應該改變爲假 - 例如在形成關閉之前。 –

+0

它的無限不夠。沒有理由有一個睡眠線程來做到這一點。這正是創建的時間。 –

相關問題