public async void AddEmployeeShowDialog(DepartmentCS toDepartment) { try { if (AddEmployeeForm == null) { AddEmployeeForm = new AddEmployeeForm(); } this.AddEmployeeForm.DepartmentList = this.GetDepartmentList(); this.AddEmployeeForm.SelectedDepartment = toDepartment; this.AddEmployeeForm.Text = "Добавление сотрудника"; if (AddEmployeeForm.ShowDialog() == DialogResult.OK) { var t = (EmployeeCS)AddEmployeeForm.RepresentedValue; t.ID = await _serviceManager.AddEmployee(t); // обновление интерфейса если нужно var selectedDep = (DepartmentCS)MainForm.DepartmentStructureTreeView.SelectedNode.Tag; if (t.DepartmentID == selectedDep.ID) { UpdateVisibleEmployees(selectedDep); } } } catch (FaultException <DefaultFault> ex) // контролируемая ситуация на сервисе { // сообщение об ошибке для пользователя MessageBox.Show(ex.Detail.Message, ex.Action, MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (FaultException) // непредвиденная проблема на сервисе, см лог на сервисе { // неизвестная ошибка на сервисе MessageBox.Show("Неизвестная ошибка сервиса. Операция не выполнена.", null, MessageBoxButtons.OK, MessageBoxIcon.Error); } catch (Exception ex) // что-то совсем пошло не так (включая CommunicationException и TimeOutException) { MessageBox.Show("Возникла ошибка: " + ex.Message, null, MessageBoxButtons.OK, MessageBoxIcon.Error); _logger.Error(ex, "Ошибка в добавлении сотрудников"); } }