public void Execute() { try { #if DEBUG //evita warning su consegna anticipata Global.Time = new FakeTimeProvider(Global.RecentSpanTimeForStart + 5); #endif var projectNames = fileManager.GetProjectNames(); if (projectNames.Length == 0) { AssignmentStartError.Fire(this, AssignmentErrorEventArgs.New(AssignmentErrorType.ProjectTargetNoFound)); return; } if (IsDoubleStart()) { var e = new CheckDoubleStartEventArgs(); AssignmentCheckDoubleStart.Fire(this, e); if (e.Abort) { return; } } var ea = new ProjectNameRequestEventArgs() { ProjectNames = projectNames, SelectedProjectName = projectNames[0] }; AssignmentRequestProjectName.Fire(this, ea); if (ea.Abort) { AssignmentStartAborted.Fire(this); return; } ProcessManager.CloseOpenWindows(AssignmentManager.SkipProcessToClose, forceClose: true); Log.Write(LogLevel.Verbose, "START: chiuse finestre"); _Execute(ea.SelectedProjectName, ea.NameAs); AssignmentStartCompleted.Fire(this); } catch (Exception e) { AssignmentStartError.Fire(this, AssignmentErrorEventArgs.New(AssignmentErrorType.UnknowError, e)); } finally { Global.Time = new DefaultTimeProvider(); Log.Close(); } }