2011-05-19 56 views
2

为BeginGetResponse的MSDN示例代码有两个异步调用,一个获得响应, 和一个从响应缓冲区读取:c#BeginGetResponse:是否有任何理由异步读取字节响应回调?

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

我问题是:与同步读取相比,这里有什么优势?

谢谢!

回答

1

我相信好处是,你仍然可以做的东西与你的UI线程一个异步调用

+0

是的,但在这种情况下,BeginRead被从回调中调用;不涉及UI线程。那么为什么不只是做一个同步读取? – Jacko 2011-05-19 12:43:10

2

这里后,我已经从进一步调查收集的:即使回调在非UI线程发生,异步读取可以防止这个线程被阻塞。 线程被阻塞时,它不能被线程池重用,而另一个并发请求可能会导致池创建一个线程,这会产生一些开销。