/// <summary> /// Sets application busy state with the specified status. /// </summary> /// <param name="status">A string describing the reason for the busy state.</param> /// <returns><see cref="System.IDisposable"/> instance which should /// be disposed upon exiting from the busy state.</returns> /// <remarks>This method is intended to be used with using statement. For example: /// <example><![CDATA[ /// using (WorkingStatusHelper.EnterBusyState("The application is currently Busy.")) /// { /// ... /// } /// ]]> /// </example> /// The application will leave busy state when the returned object has been disposed. /// </remarks> public static IDisposable EnterBusyState(string status) { var disposable = new DelegateDisposable(WorkingStatusHelper.SetReleased); WorkingStatusHelper.SetBusy(status); return(disposable); }
/// <summary> /// Method upfates day status. /// </summary> private void _UpdateDayStatus() { WorkingStatusHelper.SetBusy(null); if (_pendingDatesToUpdate.Count == 0) { return; } DateTime scheduleDate = _pendingDatesToUpdate[0]; _pendingDatesToUpdate.RemoveAt(0); BuildStatus status = new BuildStatus(); // If any solve operation is running on current date - define status as "Building". if (App.Current.Solver.GetAsyncOperations(scheduleDate).Count != 0) { status = BuildStatus.BuildingRoutes; } // If no solve operations running - define completed status by orders and routes collections of each schedule. else { status = _DefineCompletedStatus(scheduleDate); } DayStatus dayStatus = new DayStatus(status, null); _dayStatuses[scheduleDate] = dayStatus; // Raise event about status changed. if (DayStatusesChanged != null) { DayStatusesChanged(null, EventArgs.Empty); } WorkingStatusHelper.SetReleased(); }