示例#1
0
文件: Chat.cs 项目: FordRelak/ChSV
 /// <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();
     }
 }
示例#2
0
文件: Chat.cs 项目: FordRelak/ChSV
        /// <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();
            }
        }