/// <summary> /// Sings out or unregisters old jobs pane as a listener. /// </summary> /// <param name="jobChange">Delegate to be removed from job change event</param> public static void SignOutJobsPane(OnJobChangeDelegate jobChange) { if (jobsPoolDisposed) { return; } JobChange -= jobChange; }
/// <summary> /// Registers new jobs pane as a listener. /// </summary> /// <param name="jobChange">Delegate to be called on each subsequent job change</param> /// <param name="jobsListToPopulate">Snapshot of enqueued jobs</param> public static void RegisterNewJobsPane(OnJobChangeDelegate jobChange, out List <IJobView> jobsListToPopulate) { jobsListToPopulate = null; if (jobsPoolDisposed) { return; } jobsLock.EnterFreezeLock(); //----------Enter freeze lock using (var jobs = JobsQueue.GetEnumerator()) { JobChange += jobChange; jobsLock.ExitFreezeLock(); //----------Exit freeze lock jobsListToPopulate = new List <IJobView>(); while (jobs.MoveNext()) { jobsListToPopulate.Add(jobs.Current.GetView()); } } }