异步I / O(从异步webrequest读取流)

尝试从异步webrequest中读取ToEnd时,我遇到了一些问题。 这是代码:

public void GetHTTP(string http) { request = (HttpWebRequest)WebRequest.Create(http); RequestState rs = new RequestState(); // Class to hold state. Can ignore... Setup(); // contain statements such as request.Accept =...; rs.Request = request; IAsyncResult r = (IAsyncResult)request.BeginGetResponse(new AsyncCallback ResponseSetup), rs); allDone.WaitOne(); Referer = http; //Can ignore this... } private void ResponseSetup(IAsyncResult ar) { RequestState rs = (RequestState)ar.AsyncState; WebRequest request = rs.Request; WebResponse response = request.EndGetResponse(ar); Stream ResponseStream = response.GetResponseStream(); rs.ResponseStream = ResponseStream; IAsyncResult iarRead = ResponseStream.BeginRead(rs.BufferRead, 0, BUFFER_SIZE, new AsyncCallback(ReadCallBack), rs); StreamReader reader = new StreamReader(ResponseStream); information = reader.ReadToEnd(); //The problem is right here; ReadToEnd. } 

尝试调用readToEnd方法时,我收到此错误消息:该流不支持并发I / O读取或写入操作。

我搜索过,但是我找不到解决这个问题的方法。 怎么修好?

那是因为你试图做两次读取。 对BeginRead的调用启动读操作。 然后ReadToEnd在同一个流上启动另一个读操作。

我想你想要的只是ReadToEnd 。 删除对ResponseStream.BeginRead的调用。