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. Ошибка в приеме байт