我正在看下面关于使用C#发出异步web请求的参考资料:
http://msdn.microsoft.com/en-us/library/86wf6409%28v=vs.100%29.aspx
当我仅使用BeginGetResponse和EndGetResponse构建示例代码时,我的“异步调用”仍然需要数百毫秒才能完成。
有人能解释一下为什么读取需要另一个异步调用,而BeginGetResponse应该已经在单独的线程上了吗?
发布于 2012-02-22 09:15:36
我认为这映射到了底层的套接字操作。BeginGetResponse建立到服务器的连接(这就是为什么需要这么长时间)并发送请求,而BeginRead等待响应数据。
发布于 2012-02-22 10:17:45
因为BeginGetResponse/EndGetResponse必须连接到Http端点(服务器可能需要一些时间才能响应),而BeginRead/EndRead必须从响应流读取可能很长的响应。
想象一下,您的响应需要10秒才能在服务器上生成,并且它输出的数据量是10MB。
https://stackoverflow.com/questions/9387539
复制相似问题