2012-04-01 21 views
0

ホラこのコードを確認してください。HTTPWebRequestが長い時間返送されても、HTTPWebRespnseに時間がかかるのはなぜですか?

 var watch = new Stopwatch(); 
    watch.Start(); 
    var request = HttpWebRequest.Create(new Uri("http://localhost:59449/stwebapi/chat?userId=john")) as HttpWebRequest; 
    Console.WriteLine(watch.Elapsed); 

    Thread.Sleep(5000); 

    watch.Restart(); 
    var response = request.GetResponse(); 
    Console.WriteLine(watch.Elapsed); 

私はWebリクエストを送信し、長い間待ってから応答を得ました。それでも応答は実行に時間がかかりました。私が得た結果は

00:00:00.1142339 
00:00:03.1365544 

なぜ3秒かかったのですか? 同じレスポンス・ラグがあり、非同期応答があります。

すぐにGetResponse関数を実行します。それをどうすれば実現できますか?

ありがとうございました。

+0

これは本当に2つのC#バージョンに関係していますか?そうでない場合は、それらのタグを削除してください! – ThiefMaster

答えて

4

GetResponseに電話するまでは、リクエストは送信されないと強く思っています。だから、あなたのThread.Sleepは基本的にあなたのことを全くやっていません。

すぐにGetResponseに電話をかけてみませんか? 3秒かかるとおそらく、Webサーバーがあなたの要求に答えるまでにどれくらいの時間がかかったのでしょうか...

ステートメントを使用してWebResponseを処分する必要があります。そうしないと、接続プールが接続が利用可能になるのを待っているので、要求がタイムアウトすることになります)。

+0

ありがとうございました。私はこのサーバに10の要求を送り、このスレッドを実行するのにおよそ25秒かかります。しかし、私がgetResponseと言うまで要求が始まらないので、私は何もできません。たくさんありがとう... – om471987

+1

@Omkarpanhalkar:あなたはそれらをほぼ同時に送信しているなら、あなたは接続プールによって十分に抑制されているかもしれません。プールサイズを増やすことを検討することをお勧めします。 –

関連する問題