Я использую объекты 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 = await ms.ReadAsync (tempBuffer, 0, bufferSize);>> Невозможно получить доступ к удаленному объекту.Имя объекта: 'SslStream'
Я неправильно использую ResponseWriter
?Есть ли способ продолжить чтение потока после получения ответа от сервера?
Спасибо,