我有一个客户端,它是一个Windows进程,用于从c#中获取服务器的更新。服务器可能已关闭维护一段时间,如果需要更新,客户端此时将无法连接到服务器。
我想设计一下,如果连接尝试失败,客户端会在30分钟后重新尝试连接。我理解Thread.Sleep是个坏主意,所以我想就如何做一些建议。
提前致谢。
答案 0 :(得分:0)
使用计时器。如果函数无法连接,则设置一个计时器再次调用它......
e.g。
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();
}
}