public static bool ModifyTask(IBaseWindow baseWin, ref GDMTaskRecord taskRec) { bool result; try { baseWin.Context.BeginUpdate(); GDMTree tree = baseWin.Context.Tree; using (var dlg = AppHost.ResolveDialog <ITaskEditDlg>(baseWin)) { bool exists = taskRec != null; if (!exists) { taskRec = new GDMTaskRecord(tree); taskRec.InitNew(); } try { baseWin.Context.LockRecord(taskRec); dlg.Task = taskRec; result = AppHost.Instance.ShowModalX(dlg, false); } finally { baseWin.Context.UnlockRecord(taskRec); } if (!exists) { if (result) { tree.AddRecord(taskRec); } else { taskRec.Dispose(); taskRec = null; } } } } finally { baseWin.Context.EndUpdate(); } return(result); }