public async void EditDepartmentShowDialog(DepartmentCS department) { try { if (AddDepartmentForm == null) { AddDepartmentForm = new AddDepartmentForm(); } var allDeps = this.GetDepartmentList(); allDeps.Remove(department); // чтобы нельзя было указать родительским самого себя this.AddDepartmentForm.DepartmentList = allDeps; this.AddDepartmentForm.RepresentedValue = department; this.AddDepartmentForm.Text = "Редактирование подразделения"; if (AddDepartmentForm.ShowDialog() == DialogResult.OK) { var editedDepartment = (DepartmentCS)this.AddDepartmentForm.RepresentedValue; editedDepartment.ID = department.ID; await _serviceManager.EditDepartment(editedDepartment); LoccalyUpdateDepartments(department, editedDepartment); } } 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, "Ошибка в редактировании подразделения"); } }