Пример #1
0
        /// <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;
        }
Пример #2
0
        /// <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());
                }
            }
        }