Slavka_online
@Slavka_online
Интересная личность

Сериализация падает во время работы в параллельном потоке?

private void receiving()
        {
            while (isRecieving)
            {
              try { 
                byte[] bytes = new byte[4];
                _socket.Receive(bytes);
                int sizeForBuffer = BitConverter.ToInt32(bytes, 0);
                bytes = new byte[sizeForBuffer];

                while (sizeForBuffer != _socket.Receive(bytes)) ;
                BinaryFormatter bf = new BinaryFormatter();
                using (MemoryStream ms = new MemoryStream(bytes))
                {
                    Message message = (Message)bf.Deserialize(ms);
                    _history.Add(message);
                }
            }
           catch(System.Runtime.Serialization.SerializationException e)
                {

                }     

            }

        }

такой код работает в отдельной таске ( просто принимает данные якобы с сервера) и если убрать блок try/catch вы летает исключение с таким текстом " Двоичный поток "0" не содержит допустимого двоичного заголовка BinaryHeader. Возможные причины: недопустимый поток или изменение версии объекта между сериализацией и десериализацией." Нигде не могу найти причины для объяснения этого, если отловить исключение все нормально работает. В многопоточном программировании пока новичок.

=============================================================================================
P.S. Ошибка в приеме байт
  • Вопрос задан
  • 499 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы