2011-06-28 3 views
1

私はこのコードを使用してインターネットアドレスからデータを受信して​​います。しかし、タイマーが最初に刻むとき、接続はOKであり、プログラムは正常に動作します。 しかし、二回目で、エラーがこの行から上げている:私はこの問題を解決する方法を知りたいC#でこのタイマーティックエラーを修正するには?

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)内部サーバーエラー。

+5

そして、どのような例外がスローされるのか知りたい。 – Bobby

+1

エラーの詳細を投稿できますか? –

+0

@Bobby @Tom Squiresエラー: WebExceptionが処理されませんでした。 リモートサーバーからエラーが返されました:(500)内部サーバーエラー。 –

答えて

1

多分、あなたはタイマーイベントハンドラのタイマーを非アクティブにすることができます。

+0

あなたはtimer1.Stop()を意味しますか? timer1.Start(); ?はいの場合、問題は引き続き発生します。 –

5

通常、タイマーを使用するときは、処理を開始する前にタイマーを停止し、処理が完了したらタイマーを再開します。それを試して、それが動作するかどうか確認してください。

+0

私はこれが関連している可能性があります - あなたのタイマーイベントが最初に処理している間にもう一度起動しているのであれば、それは面倒かもしれません。 –

+0

私もこの解決策に同意します – AjayR

+0

あなたはtimer1.Stop()を意味しますか? timer1.Start(); ? –

2

ほとんどの場合、前回の要求が完了していないため、次のタイマーが間違っているために発生します。 最初のステップでは、try/catchブロックを記述してエラーを処理する(または無視する)必要があります。また、どのようなタイプの例外が発生しているのか見てください。

また、ソケットを使用して待機時間を指定して再帰的に関数を実行することもできます。

0

(500) Internal Server Errorの場合は、エラーが何かを確認するためにサーバーに確認する必要があります。それはlocalhostなので、私はあなたがサーバにアクセスできると思います。それはエラーが起こる場所です。

関連する問題