如何在C#中修复此计时器计时错误?

如何在C#中修复此计时器计时错误?,c#,.net,timer,C#,.net,Timer,我使用此代码从Internet地址接收数据。但是,当计时器第一次滴答作响时,连接正常,程序工作正常但在第二次执行时,该行出现错误: HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 我想知道如何解决这个问题 计时器间隔为30秒 代码: 错误: WebException未处理。 远程服务器返回错误:(500)内部服务器错误。可能您可以在计时器事件处理程序中停用计时器,并在结束时对其进行响应。可能您可以在计时器事件

我使用此代码从Internet地址接收数据。但是,当计时器第一次滴答作响时,连接正常,程序工作正常但在第二次执行时,该行出现错误

HttpWebResponse response = (HttpWebResponse)request.GetResponse();
我想知道如何解决这个问题

计时器间隔为30秒

代码:

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

可能您可以在计时器事件处理程序中停用计时器,并在结束时对其进行响应。

可能您可以在计时器事件处理程序中停用计时器,并在结束时对其进行响应。

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

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

大多数情况下,发生这种情况是因为前一个请求没有完成,而下一个计时器正在计时。 第一步是您应该编写try/catch块来处理错误(或者只是忽略错误)。还可以查看您得到的异常类型


或者,您可以使用套接字在等待时间内递归执行该函数。

大多数情况下,这是因为前一个请求未完成,而下一个计时器正在计时。 第一步是您应该编写try/catch块来处理错误(或者只是忽略错误)。还可以查看您得到的异常类型



或者,您可以使用套接字在等待时间内递归执行该功能。

如果是
(500)内部服务器错误,则必须与服务器进行检查,以查看错误是什么。由于它是localhost,我假设您可以访问服务器。这就是将要发生错误的地方。

如果是
(500)内部服务器错误
,则必须与服务器进行检查,以查看错误是什么。由于它是localhost,我假设您可以访问服务器。这就是错误所在。

我想知道引发了什么异常。你能发布错误详细信息吗?@Bobby@Tom Squires错误:WebException未处理。远程服务器返回错误:(500)内部服务器错误。@Bobby:什么是内部错误?如何修复此问题?这是您的服务器应用程序吗?如果是,它就坏了。问题就在那里。我想知道引发了什么异常。你能发布错误详细信息吗?@Bobby@Tom Squires错误:WebException未处理。远程服务器返回错误:(500)内部服务器错误。@Bobby:什么是内部错误?如何修复此问题?这是您的服务器应用程序吗?如果是,它就坏了。问题就在那里。我怀疑这可能与此有关-如果您的计时器事件在第一个事件已在处理时再次触发,可能会很麻烦。我也同意此解决方案。您的意思是timer1.Stop();和timer1.Start()@邪恶的格里博:如果是,问题仍然存在。Timer.Stop或Timer.Start应该可以工作,但你也可以尝试Timer.Enabled=false和Timer.Enabled=true。Timer.Enabled=false将在处理任何代码之前在计时器处理程序中使用。Timer.Enabled=true将在处理代码后在同一个处理程序中使用。我怀疑这可能与此相关-如果计时器事件在第一个事件已在处理时再次触发,则可能会造成麻烦。我也同意此解决方案您的意思是timer1.Stop();和timer1.Start()@邪恶的格里博:如果是,问题仍然存在。Timer.Stop或Timer.Start应该可以工作,但你也可以尝试Timer.Enabled=false和Timer.Enabled=true。Timer.Enabled=false将在处理任何代码之前在计时器处理程序中使用。Timer.Enabled=true将在处理代码后在同一处理程序中使用。您是指timer1.Stop();和timer1.Start()?如果是,问题仍然存在。您是说timer1.Stop();和timer1.Start()?如果是,问题仍然存在。
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();
}