如何修复C#中的计时器勾选错误
本文关键字:错误 计时器 何修复 | 更新日期: 2023-09-27 18:00:38
我正在使用此代码从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)内部服务器错误。
通常,当我使用计时器时,我会在开始处理之前停止计时器,然后在处理完成后重新启动它。试试看是否有效。
大多数情况下,这是因为上一个请求没有完成,而下一个计时器滴答作响。第一步是应该编写try/catch块来处理错误(或者只是忽略错误)。还要查看您得到的异常类型。
或者,您可以使用套接字递归地执行该函数,但需要一些等待时间。
也许您可以在计时器事件处理程序中停用计时器,并在最后对其进行响应。
如果它是(500) Internal Server Error
,那么您必须与服务器核实错误。由于它是localhost,我认为您可以访问服务器。这就是错误所在。