Пример #1
0
 private void OnProgress(AbstractBackgroundProcess process, double progress)
 {
     if (Progress != null)
     {
         Progress(process, progress);
     }
 }
 public void CancelProcess(AbstractBackgroundProcess process)
 {
     lock(activeProcesses)
         if (activeProcesses.Contains(process) && threadLookup[process].IsAlive) {
             threadLookup[process].Abort();
             activeProcesses.Remove(process);
             threadLookup.Remove(process);
         }
 }
Пример #3
0
 public void CancelProcess(AbstractBackgroundProcess process)
 {
     lock (activeProcesses)
         if (activeProcesses.Contains(process) && threadLookup[process].IsAlive)
         {
             threadLookup[process].Abort();
             activeProcesses.Remove(process);
             threadLookup.Remove(process);
         }
 }
Пример #4
0
        public void WaitFor(AbstractBackgroundProcess process)
        {
            if (!activeProcesses.Contains(process))
            {
                return;
            }

            while (process.Status == ProcessStatus.INITIALIZED ||
                   process.Status == ProcessStatus.RUNNING)
            {
                Thread.Sleep(100);
            }
        }
Пример #5
0
        private void OnStatusChanged(AbstractBackgroundProcess process, ProcessStatus status)
        {
            lock (activeProcesses) {
                if ((process.Status == ProcessStatus.FAILED ||
                     process.Status == ProcessStatus.COMPLETED ||
                     process.Status == ProcessStatus.ABORTED) &&
                    activeProcesses.Contains(process))
                {
                    activeProcesses.Remove(process);
                    threadLookup.Remove(process);
                }
            }

            if (StatusChanged != null)
            {
                StatusChanged(process, status);
            }
        }
Пример #6
0
        public void StartProcess(AbstractBackgroundProcess process)
        {
            lock (activeProcesses)
                if (!activeProcesses.Contains(process))
                {
                    activeProcesses.Add(process);
                    OnStatusChanged(process, process.Status);

                    process.StatusChanged += statusChangedDelegate;
                    process.Progress      += progressDelegate;

                    Thread thread = new Thread(new ThreadStart(process.WorkRunner));
                    thread.Name           = process.Name;
                    thread.IsBackground   = true;
                    threadLookup[process] = thread;

                    thread.Start();
                }
        }
        private void OnStatusChanged(AbstractBackgroundProcess process, ProcessStatus status)
        {
            lock (activeProcesses) {
                if ((process.Status == ProcessStatus.FAILED ||
                    process.Status == ProcessStatus.COMPLETED ||
                    process.Status == ProcessStatus.ABORTED) &&
                    activeProcesses.Contains(process)) {

                    activeProcesses.Remove(process);
                    threadLookup.Remove(process);
                }
            }

            if (StatusChanged != null) StatusChanged(process, status);
        }
 private void OnProgress(AbstractBackgroundProcess process, double progress)
 {
     if (Progress != null) Progress(process, progress);
 }
        public void WaitFor(AbstractBackgroundProcess process)
        {
            if (!activeProcesses.Contains(process))
                return;

            while (process.Status == ProcessStatus.INITIALIZED ||
                   process.Status == ProcessStatus.RUNNING) {

                Thread.Sleep(100);
            }
        }
        public void StartProcess(AbstractBackgroundProcess process)
        {
            lock (activeProcesses)
                if (!activeProcesses.Contains(process)) {
                    activeProcesses.Add(process);
                    OnStatusChanged(process, process.Status);

                    process.StatusChanged += statusChangedDelegate;
                    process.Progress += progressDelegate;

                    Thread thread = new Thread(new ThreadStart(process.WorkRunner));
                    thread.Name = process.Name;
                    threadLookup[process] = thread;

                    thread.Start();
                }
        }
Пример #11
0
 /// <summary>
 /// Display metadata background refresh % compete as progress bar and text percentage
 /// </summary>
 /// <param name="process"></param>
 /// <param name="progress"></param>
 void ProcessManager_Progress(AbstractBackgroundProcess process, double progress)
 {
     if (process.Name == "MediaInfo Updater")
       {
     if (MetadataProgressBar != null)
     {
       if (progress == 0.0)
       {
     MetadataProgressBar.Percentage = 0;
     GUIPropertyManager.SetProperty("#mvCentral.Metadata.Scan.Active", "false");
     GUIControl.HideControl(GetID, MetadataProgressBar.GetID);
       }
       else if (progress >= 100.0)
     GUIPropertyManager.SetProperty("#mvCentral.Metadata.Scan.Active", "false");
       else
       {
     SetProperty("#mvCentral.Metadata.Update.Progress", string.Format("{0:0.0%} {1}", (progress / 100), Localization.Compete));
     GUIPropertyManager.SetProperty("#mvCentral.Metadata.Scan.Active", "true");
     MetadataProgressBar.Percentage = (float)progress;
       }
     }
     else
     {
       GUIPropertyManager.SetProperty("#mvCentral.Metadata.Scan.Active", "false");
       SetProperty("#mvCentral.Metadata.Update.Progress", string.Format("{0:0.0%} {1}", 0, Localization.Compete));
     }
     GUIPropertyManager.Changed = true;
       }
 }