protected virtual void AddBagToQueue(DisplayTaskBag task) { lock (this.Lock) { this.QueuedTasks.Add(task); task.Task.State = NotificationState.InQueue; } }
protected virtual void LastPreparationsAndVisualizeTask(DisplayTaskBag task) { var uiManager = HatcherGuide <IUIManager> .Instance; uiManager.ExecuteActionOnUIThreadAsynchronously( delegate { var window = HatcherGuide <INotificationWindow> .CreateNewInstance(); task.WindowVM.ResultObtained += this.WindowVM_ResultObtained; window.PrepareAndDisplay(task.WindowVM); }); }
protected virtual void ProcessPendingQueue() { lock (this.Lock) { this.RemoveExpiredTasks(); this.RecalculateDisplayedTasksPositions(); DisplayTaskBag nextBagToDisplay = this.DequeueBagAndPrepareItToDisplay(); while (nextBagToDisplay != null) { this.RecalculateDisplayedTasksPositions(); this.LastPreparationsAndVisualizeTask(nextBagToDisplay); nextBagToDisplay = this.DequeueBagAndPrepareItToDisplay(); } } }
protected virtual bool DiscardTask(NotificationDisplayTask task, bool onlyIfNonDisplayed) { DisplayTaskBag bagToRemove = null; try { lock (this.Lock) { bagToRemove = this.QueuedTasks.FirstOrDefault(displayTaskBag => displayTaskBag.Task == task); if (bagToRemove != null) { this.QueuedTasks.Remove(bagToRemove); return(true); } //Don't try to remove from main collection if flag is true if (onlyIfNonDisplayed) { return(false); } bagToRemove = this.DisplayedWaitForResultTasks.FirstOrDefault(displayTaskBag => displayTaskBag.Task == task); if (bagToRemove == null) { return(false); } this.DisplayedWaitForResultTasks.Remove(bagToRemove); return(true); } } finally { if (bagToRemove != null) { bagToRemove.WindowVM.IsAlive = false; bagToRemove.Task.State = NotificationState.Aborted; } } }
protected virtual void LastPreparationsAndVisualizeTask(DisplayTaskBag task) { var uiManager = HatcherGuide<IUIManager>.Instance; uiManager.ExecuteActionOnUIThreadAsynchronously( delegate { var window = HatcherGuide<INotificationWindow>.CreateNewInstance(); task.WindowVM.ResultObtained += this.WindowVM_ResultObtained; window.PrepareAndDisplay(task.WindowVM); }); }