private void OnKill(object sender, EventArgs e)
        {
            AsyncExecuteCommandProcess process = (AsyncExecuteCommandProcess)sender;

            this.CancelAllTasks();
            this.CleanUp(process);
        }
 private void CleanUp(AsyncExecuteCommandProcess process)
 {
     if (process != null)
     {
         process.Killed   -= new EventHandler(this.OnKill);
         process.Complete -= new EventHandler(this.OnComplete);
         process.Progress -= new EventHandler(this.OnProgress);
     }
     this.asyncProgressDialog = (AsyncProcessDialog)null;
 }
        private void CancelJob(AsyncProcess process, object hint)
        {
            string str = hint as string;
            AsyncExecuteCommandProcess executeCommandProcess = process as AsyncExecuteCommandProcess;

            if (executeCommandProcess == null || executeCommandProcess.Cancel || !(executeCommandProcess.Name == str) && str != null)
            {
                return;
            }
            executeCommandProcess.Cancel = true;
            executeCommandProcess.Kill();
        }
        public void StartAsyncProcess(IExpressionInformationService expressionInformationService, Action <object, DoWorkEventArgs> workerDelegate, EventHandler onBegun, EventHandler onComplete, EventHandler onProgress, EventHandler onKill)
        {
            AsyncExecuteCommandProcess executeCommandProcess = new AsyncExecuteCommandProcess(string.Empty, workerDelegate);

            executeCommandProcess.Begun    += onBegun;
            executeCommandProcess.Killed   += onKill;
            executeCommandProcess.Complete += onComplete;
            executeCommandProcess.Progress += onProgress;
            executeCommandProcess.Progress += new EventHandler(this.OnProgress);
            executeCommandProcess.Killed   += new EventHandler(this.OnKill);
            executeCommandProcess.Complete += new EventHandler(this.OnComplete);
            this.processingQueue.Add((AsyncProcess)executeCommandProcess, false);
            if (this.asyncProgressDialog != null)
            {
                return;
            }
            this.asyncProgressDialog = new AsyncProcessDialog((AsyncProcess)this.processingQueue, expressionInformationService, 0.0);
            this.ShowProgressDialog(true);
            this.CleanUp((AsyncExecuteCommandProcess)null);
            this.asyncProgressDialog = (AsyncProcessDialog)null;
        }