/// <summary> /// Транслирование изменения чата (в отдельный поток) /// </summary> private void GetMessage(object sender, DoWorkEventArgs e) { Thread.Sleep(500); try { while (checkExit) { if (bGetMessages.CancellationPending) { return; } if (streamChat == null) { streamChat = clientChat.GetStream(); } //Получить if (streamChat.DataAvailable) { string mesFromServer = reader.ReadString(); if (mesFromServer.IndexOf("DisconnectZ") == 0) { CloseChat(); } else if (mesFromServer.IndexOf("ActivUsersListZ") == 0) { new Thread(new ParameterizedThreadStart(AddMembers)).Start(mesFromServer); } else { new Thread(new ParameterizedThreadStart(AddChatMessage)).Start(mesFromServer); } mesFromServer = ""; } else if (!haveConnect) { ConnectTimer.Stop(); throw new Exception("Сервер не отвечает."); } else if (haveConnect) { ConnectTimer.Stop(); } } } catch (Exception ex) { MessageBox.Show(ex.ToString(), "GetMessage", MessageBoxButtons.OK, MessageBoxIcon.Error); //ErrorSend(); Disconnect(); } }
/// <summary> /// Отправить сообщение (в отдельный поток) /// </summary> private void SendMessage(object sender, DoWorkEventArgs e) { try { if (bSendMessage.CancellationPending) { return; } if (!clientChat.Connected) { Close(); } if (streamChat == null) { streamChat = clientChat.GetStream(); } //Отправить string message = ChatZ + ' ' + userName + ": " + MessageTextBox.Text; BeginInvoke((MethodInvoker)(() => { MessageTextBox.Clear(); })); if (!clientChat.Connected) { return; } ConnectTimer.Start(); writer.Write(message); writer.Flush(); SendButton.Enabled = true; } catch (Exception ex) { MessageBox.Show(ex.ToString(), "SendMessage", MessageBoxButtons.OK, MessageBoxIcon.Error); //ErrorSend(); Disconnect(); } }