//После авторизации здесь слушаем сервер и обрабатываем сообщения private void Listen() { if (Client == null || Stream == null || !IsConnected()) { CrashAndReport(new Exception("There is no active connection!")); return; } while (IsRunning) { try { if (!Stream.DataAvailable) { continue; } //??? or //if (!Stream?.DataAvailable == null) continue; var message = ReceiveMessage(); if (message?.GetType() == typeof(TextMessage)) { sessionForm.BeginInvoke(UpdateChat, message as TextMessage); } if (message?.GetType() == typeof(OnlineList)) { sessionForm.BeginInvoke(UpdateOnlineList, message as OnlineList); } } catch (ObjectDisposedException e) { if (IsRunning) { CrashAndReport(e); } return; } } }
private void CrashAndReport(Exception exception) { if (loginForm.Visible) { loginForm.BeginInvoke(UpdateView, exception.Message, Color.Red); } else { sessionForm?.BeginInvoke(UpdateChat, new TextMessage { From = "System", Text = exception.Message, TimeStamp = DateTime.Now.ToShortTimeString() } ); } Thread.Sleep(3500); sessionForm?.Close(); }