protected override AsyncAction CreateAction(out bool cancelled) { Program.AssertOnEventThread(); cancelled = false; AsyncAction action = null; using (PropertiesDialog propertiesDialog = new PropertiesDialog(VM)) { propertiesDialog.SelectVMCPUEditPage(); propertiesDialog.FormClosing += (s, ee) => { if (propertiesDialog.DialogResult == DialogResult.Yes && ee.Action != null) { ee.StartAction = false; action = ee.Action; } }; propertiesDialog.ShowDialog(Program.MainWindow); if (propertiesDialog.DialogResult != DialogResult.Yes || action == null) cancelled = true; } return action; }