Hola检查此代码。
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);
我发了网页请求,等了很久,然后得到了回复。仍然需要更长时间才能执行。我得到的结果是
00:00:00.1142339
00:00:03.1365544
为什么回应花了我3秒钟? 异步响应存在相同的响应延迟。
我希望立即执行GetResponse函数。我怎样才能做到这一点?
感谢。
答案 0 :(得分:4)
我强烈怀疑,在您致电GetResponse
之前,请求甚至都没有发送...所以您的Thread.Sleep
基本上对您没有任何好处。
为什么不立即致电GetResponse
?如果需要3秒钟,那么可能是网络服务器用了多长时间来回答您的请求......
(顺便说一下,你应该使用using
语句来确保你处理WebResponse
;否则你最终会因为连接池等待连接而超时请求变得可用。)