restResponse sslStream располагается на ответ перед полным чтением потока C # - PullRequest
0 голосов
/ 20 февраля 2019

Я использую объекты 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?Есть ли способ продолжить чтение потока после получения ответа от сервера?

Спасибо,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...