如何修复C#中的这个Timer tick错误?

时间:2011-06-28 12:50:12

标签: c# .net timer

我正在使用此代码从Internet地址接收数据。但是,当计时器第一次打勾时连接正常并且程序正常工作。 但是第二次,此行引发了错误

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

我想知道如何解决这个问题。

计时器间隔为30秒。

代码:

private void timer1_Tick(object sender, EventArgs e)
{
    WebRequest request = WebRequest.Create("http://localhost  
    /go/online.asp?prog=y&rln=" + Properties.Settings.Default.cos);

    request.Credentials = CredentialCache.DefaultCredentials;

    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    Stream dataStream = response.GetResponseStream();
    StreamReader reader = new StreamReader(dataStream);

    string responseFromServer = reader.ReadToEnd();

    reader.Close();
    dataStream.Close();
    response.Close();
}

错误: WebException未处理。 远程服务器返回错误:(500)内部服务器错误。

4 个答案:

答案 0 :(得分:5)

通常当我使用计时器时,我会在开始处理之前停止计时器,然后在完成处理后重新启动计时器。试试看,看看它是否有效。

答案 1 :(得分:2)

主要是因为前一个请求未在下一个计时器滴答时完成。 第一步是你应该编写try / catch块来处理错误(或者只是忽略)。另请参阅您获得的异常类型。

或者,你可以使用套接字以一些等待时间递归地执行该函数。

答案 2 :(得分:1)

也许您可以在计时器事件处理程序中停用计时器,并在最后对其进行反应。

答案 3 :(得分:0)

如果它是(500) Internal Server Error,那么你必须检查服务器以查看错误是什么。由于它是localhost,我假设您可以访问服务器。这就是错误所在的地方。