C# Windows服务在出现异常时重新启动

C# Windows服务在出现异常时重新启动,c#,asp.net,windows-services,timeout,system.net.webexception,C#,Asp.net,Windows Services,Timeout,System.net.webexception,我正在构建一个windows服务,定期从网站获取信息 捕获异常时,如何重新开始查找?例如,当互联网在以后上下波动时 代码: 这是一个非常粗糙的示例,可以帮助您开始,这将阻止您的程序继续运行,直到您得到有效的响应。有更好的方法可以做到这一点,但这正是你想要的想法。祝你好运 myWebResponse = myWebRequest.GetResponse(); while (myWebResponse.ContentLength == -1) { //sleep myWebResponse

我正在构建一个windows服务,定期从网站获取信息 捕获异常时,如何重新开始查找?例如,当互联网在以后上下波动时

代码:
这是一个非常粗糙的示例,可以帮助您开始,这将阻止您的程序继续运行,直到您得到有效的响应。有更好的方法可以做到这一点,但这正是你想要的想法。祝你好运

myWebResponse = myWebRequest.GetResponse();
while (myWebResponse.ContentLength == -1) {  
  //sleep
 myWebResponse = myWebRequest.GetResponse();
}  

//continue execution
您可能应该检查一下远程站点是否可用,然后轮询直到可用为止,或者在服务可用时中断。这样,您就不必从抛出的异常中恢复


我认为应该为应用程序带来更大灾难的事情保留使用异常。

为什么不增加catch块中的计时器,并在try中将其设置为1500?下一次成功尝试时,间隔时间为1500。我认为你需要捕获的不仅仅是WebException,TimeoutException是一个大的异常。我如何才能在捕获中添加另一个异常?@unknown:你只需将它们链接起来:尝试{}捕获(WebException we){}捕获(TimeoutException te){}等。只需在第一个捕获块下面添加另一个捕获块。谢谢回复。我已经尝试过了,但是在投票的中期,如果互联网退出,仍然挂在那里,抛出一个异常。HRM,我敢打赌,这与你在轮询时所尝试的命令有关,你能发布那个代码,让我们看看它吗?我从字符串中获得所需的信息,因此轮询包括将值分配给字符串。当您检查cadena()是否返回字符串时,为时已晚,并且您的异常已被抛出。在开始尝试从远程站点读取之前,您需要轮询有效的连接。有意义的是,在这种情况下,什么是使连接有效的最佳方法?
myWebResponse = myWebRequest.GetResponse();
while (myWebResponse.ContentLength == -1) {  
  //sleep
 myWebResponse = myWebRequest.GetResponse();
}  

//continue execution