2012-04-01 6 views
0

Hola diesen Code überprüfen.Warum dauert HTTPWebRespense länger, auch wenn HTTPWebRequest lange zurückgesendet wird?

 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); 

Ich schickte Web-Anfrage, wartete auf eine lange Zeit und bekam dann die Antwort. Die Antwort dauerte noch länger. Das Ergebnis, das ich bekam, war

00:00:00.1142339 
00:00:03.1365544 

Warum Antwort dauerte mich 3 Sekunden? Gleiche Antwortverzögerung ist dort mit asynchroner Antwort.

Ich möchte GetResponse Funktion sofort ausgeführt werden. Wie kann ich das erreichen?

Danke.

+0

Ist das wirklich mit zwei C# -Versionen verbunden? Wenn nicht, bitte entfernen Sie diese Tags! – ThiefMaster

Antwort

4

Ich vermute stark, dass, bis Sie GetResponse anrufen, die Anfrage nicht einmal gesendet wird ... so Ihre Thread.Sleep ist im Grunde tun Sie überhaupt nicht gut.

Warum rufen Sie nicht einfach sofort GetResponse? Wenn es 3 Sekunden dauert, dann vermutlich das ist, wie lange der Web-Server Ihre Anfrage zu beantworten, nahm ...

(Nebenbei bemerkt, sollten Sie eine using Anweisung verwenden Sie sicherstellen, dass der WebResponse verfügen, andernfalls Sie‘ Es kommt zu Verzögerungen bei der Anforderung, da der Verbindungspool darauf wartet, dass eine Verbindung verfügbar wird.)

+0

Danke Jon. Ich sende 10 Anfragen an diesen Server und es dauert fast 25 Sekunden, um diesen Thread auszuführen. Aber da die Anfrage nicht beginnt, bis ich getResponse sage, gibt es nichts, was ich viel tun könnte. Vielen Dank ... – om471987

+1

@Omkarpanhalkar: Wenn Sie sie alle ungefähr zur gleichen Zeit senden, können Sie durch den Verbindungspool gedrosselt werden - es ist wahrscheinlich nur * tatsächlich * 4 zu einer Zeit zu senden. Möglicherweise möchten Sie die Poolgröße erhöhen. –

Verwandte Themen