【发布时间】:2009-05-21 14:40:13
【问题描述】:
我正在构建一个定期从网站获取信息的 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;
}
【问题讨论】:
-
为什么不直接增加 catch 块中的计时器并在 try 中将其设置为 1500?在下一次成功的尝试中,它将有 1500 的间隔。我认为您需要捕获的不仅仅是 WebException,TimeoutException 是一个大问题。
-
如何在 catch 中添加另一个异常?
-
@unknown:您只需将它们链接起来:尝试 {} catch (WebException we){} catch (TimeoutException te){} 等等。
-
只需在第一个 catch 块下方添加另一个 catch 块。
标签: c# asp.net windows-services timeout system.net.webexception