//Send package public void SendPackage(object obj) { try { _formatter.Serialize(_stream, obj); } catch (Exception ex) { Disconnect(); OnDataTransferError?.Invoke(ex, new ChatErrorEventArgs("Send message error")); } }
}//c-tor //Receive messages via network stream public void Work() { Thread newThread = new Thread(new ThreadStart(() => { while (!_isStopped) { try { object msg = _formatter.Deserialize(_stream); OnChatMessageReceived?.Invoke(this, msg); } catch (Exception ex) { // IsStopped = true; Disconnect(); OnDataTransferError?.Invoke(ex, new ChatErrorEventArgs("Connection error")); } } } )); newThread.IsBackground = true; newThread.Start(); }