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;
        }