/// <summary> /// Отсылка сообщения /// </summary> private void SendMessage() { if (IsWhispering) { if (SelectedPerson == null) { LogError("Не выбран пользователь для отправки сообщения"); return; } if (CurrentPerson.Equals(SelectedPerson)) { LogError("Нельзя отправлять личные сообщения самому себе"); return; } } Common.Messages.TextMessage mess = IsWhispering ? new Common.Messages.PersonalTextMessage(CurrentPerson, SelectedPerson, UserMessageText) : new Common.Messages.TextMessage(CurrentPerson, UserMessageText); OperationResult opRes = new OperationResult { Success = true }; System.Threading.Tasks.Task.Factory.StartNew(() => { try { opRes = _communicationManager.SendMessage(IsWhispering, mess); } catch (Exception ex) { opRes.Success = false; OperationError err = new OperationError(); ///Если при отсылке сообщения обнаруживается разрыв соединения с сервером завершаем подключение if (ex.GetType() == typeof(System.ServiceModel.CommunicationObjectFaultedException)) { err.ErrorMessage = "Не получилось соединиться с сервером"; Disconnect(shoudClearInfo: true); } else { err.ErrorMessage = ex.Message; } opRes.Errors.Add(err); } if (!opRes.Success) { LogError(opRes); } }); UserMessageText = string.Empty; }
/// <summary> /// Отсылка сообщение к серверу /// </summary> /// <param name="isWhispering"></param> /// <param name="mess"></param> /// <returns></returns> public OperationResult SendMessage(bool isWhispering, Common.Messages.TextMessage mess) { OperationResult opRes = new OperationResult(); //Если отправлется личное сообщение if (isWhispering) { opRes = _service.Whisper(mess as Common.Messages.PersonalTextMessage); } //Сообщение в общий чат else { opRes = _service.Say(mess); } return(opRes); }