mer*_*011 0 .net c# httpwebrequest
我正在查看以下使用C#进行异步Web请求的参考:
http://msdn.microsoft.com/en-us/library/86wf6409%28v=vs.100%29.aspx
当我使用BeginGetResponse和EndGetResponse构建示例代码时,我的"异步调用"仍需要数百毫秒才能完成.
有人解释为什么读取需要另一个异步调用,当BeginGetResponse应该已经在一个单独的线程上?
因为BeginGetResponse/EndGetResponse与连接到Http端点(服务器可能需要一些时间来响应)有关,而BeginRead/EndRead与从响应流中读取可能很长的响应有关.
想象一下,您的响应需要10秒才能在服务器上生成,并且它吐出的数据量是10MB.
如果没有第一对Begin/EndGetResponse调用,您的线程将被阻塞至少10秒,等待响应的第一个字节返回.
如果没有第二组Begin/EndRead调用,当您一次读取一个网络数据包的10MB数据时,您的线程将被阻塞(请记住,TCP数据包的大小有限,因此所有人都需要一段时间才能返回到客户)
| 归档时间: |
|
| 查看次数: |
368 次 |
| 最近记录: |