我正在构建一个定期从网站上获取信息的Windows服务 捕获异常时如何重新开始查看?例如,当互联网在以后下降时。
public string cadena(string pagina)
{
try
{
String cadena;
WebRequest myWebRequest = WebRequest.Create(pagina);
myWebrequest = 10000;
WebResponse myWebResponse = myWebRequest.GetResponse();
Stream ReceiveStream = myWebResponse.GetResponseStream();
Encoding encode = System.Text.Encoding.GetEncoding("ISO-8859-1");
StreamReader readStream = new StreamReader(ReceiveStream, encode);
cadena = readStream.ReadToEnd();
readStream.Close();
myWebResponse.Close();
return cadena;
}
catch (WebException error)
{
myTimer.Enabled = true;
return "error";
}
}
public void inicia(object sender, System.Timers.ElapsedEventArgs e)
{
myTimer.Enabled = false;
String strSite = cadena("www.something.com");
//Do something with strSite...
myTimer.Enabled = true;
}
protected override void OnStart(string[] args)
{
myTimer = new System.Timers.Timer();
myTimer.Interval = 1500;
myTimer.Elapsed += new System.Timers.ElapsedEventHandler(inicia);
myTimer.Enabled = true;
}
答案 0 :(得分:1)
这是一个非常粗略的示例,可以让您开始,这将使您的程序继续,直到您获得有效的响应。有更好的方法可以做到这一点,但这是你想要的想法。祝你好运!
myWebResponse = myWebRequest.GetResponse();
while (myWebResponse.ContentLength == -1) {
//sleep
myWebResponse = myWebRequest.GetResponse();
}
//continue execution
您可能应该检查一下远程站点是否可用,并进行轮询直到可用,或者在服务可用时中断。这样您就不必从抛出的异常中恢复。
我认为使用异常应该保留给你的应用程序更具灾难性的东西。