2011-02-13 86 views
0

我有一個客戶端,它是一個Windows進程,從c#中的服務器獲取更新。服務器可能因爲維護而停機一段時間,如果需要更新,客戶端無法在此時連接到服務器。在一段時間後重新嘗試服務器連接

我想要設計,以便客戶端在30分鐘後嘗試連接,如果連接嘗試失敗。我明白Thread.Sleep會是個壞主意,所以我想就如何做到這一點提出一些建議。

在此先感謝。

回答

0

使用計時器。如果功能無法連接,請設置一個計時器以再次調用它...

例如,

class MyClass 
    { 




System.Timers.Timer m_ConnectTimer = null; 

     .. 
     .. 

    void ConnecToServer() 
    { 
     if (m_ConnectTimer != null) 
     { 
      m_ConnectTimer.Enabled = false; 
      m_ConnectTimer.Dispose(); 
      m_ConnectTimer = null; 
     } 

     //Try to connect to the server 

     if (bConnectedToTheServer) 
     { 
      //Do the servery stuff 
     } 
     else //set the timer again 
     { 
      m_ConnectTimer = new Timer(30 * 60 * 1000); 
      m_ConnectTimer.Elapsed += new ElapsedEventHandler(TimerHandler) 
      m_ConnectTimer.Enabled = true; 
     } 

    } 


    void TimerHandler(object sender, ElapsedEventArgs e) 
    { 
     ConnectToServer(); 
    } 

} 
+0

您不需要每次重新創建計時器... – 2011-02-14 00:10:28

相關問題