c#BeginGetResponse:有没有理由在响应回调中异步读取字节?

时间:2011-05-19 03:03:36

标签: c# asynchronous httpwebrequest

BeginGetResponse的MSDN示例代码有两个异步调用,一个用于获取响应, 和一个从响应缓冲区读取:

http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.begingetresponse.aspx

见这一行:

// Begin the Reading of the contents of the HTML page and print it to the console.
  IAsyncResult asynchronousInputRead = responseStream.BeginRead(myRequestState.BufferRead, 0, BUFFER_SIZE, new AsyncCallback(ReadCallBack), myRequestState);

我的问题是:这里有什么优势,而不是同步阅读?

谢谢!

2 个答案:

答案 0 :(得分:2)

以下是我从进一步调查中收集到的内容:即使回调发生在非UI线程上,异步读取也会阻止此线程阻塞。 当线程被阻塞时,它不能被线程池重用,而另一个并发请求可能导致池再创建一个线程,这会产生一些开销。

答案 1 :(得分:1)

我相信优势在于,您可以在异步调用后继续使用UI线程