我正在使用restSharp.dll对象(RestClient
,RestRequest
和RestResponse
)从服务器读取大量数据。
由于我知道完整的响应将需要时间,因此我想立即处理收到的数据,而无需等待完整的响应。因此,使用ResponseWriter
属性:
RestClient restClient = new RestClient("base URI here");
RestRequest restRequest = new RestRequest("relative URI here", RestSharp.Method.GET);
restRequest.ResponseWriter = new Action<Stream>(ReadStream);
IRestResponse restResponse = restClient.Execute(this.restRequest);
if (restResponse.StatusCode == HttpStatusCode.OK)
{
// More code
}
ReadStream是:
public async void ReadStream(Stream ms)
{
bufferSize = 1024
do
{
byte[] tempBuffer = new byte[bufferSize];
bytesRead =await ms.ReadAsync(tempBuffer, 0, bufferSize);
//Data handling
} while (bytesRead > 0 && ms.CanRead());
}
问题是,远程服务器处理我的查询的速度比我使用ReadAsync
方法读取流要快得多,
并且似乎当服务器返回响应时,SslStream
被丢弃了,剩下了我尚未读取的数据。我得到的错误是:
bytesRead =等待ms.ReadAsync(tempBuffer,0,bufferSize); >>不能 访问已处置的对象。对象名称:“ SslStream”
我不正确地使用ResponseWriter
吗?从服务器收到响应后,有没有办法继续读取流?
谢谢