private void ButtonAddStep_Click(object sender, RoutedEventArgs e) { var type = (CrmPluginType)ListPluginTypes.SelectedItem; var newStep = new CrmTypeStep { Type = type }; new Thread(() => { TypeStep dialogue = null; Dispatcher.Invoke(() => { dialogue = new TypeStep(newStep, context); dialogue.ShowDialog(); }); try { if (!dialogue.IsUpdate) { return; } var filter = CrmDataHelper.MessageList .FirstOrDefault(messageQ => messageQ.EntityName == newStep.Entity && messageQ.MessageName == newStep.Message); newStep.FilterId = filter?.FilteredId ?? Guid.Empty; var message = CrmDataHelper.MessageList .First(messageQ => messageQ.MessageName == newStep.Message); newStep.MessageId = message.MessageId; assemblyRegistration.CreateTypeStep(newStep); Dispatcher.Invoke(() => type.Children.Add(newStep)); } catch (Exception exception) { PopException(exception); } finally { HideBusy(); } }).Start(); }