예제 #1
0
        /// <summary>
        /// Export worker do work handler.
        /// </summary>
        /// <param name="sender">Export background worker.</param>
        /// <param name="e">Report source settings.</param>
        private void ExportWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker bw = sender as BackgroundWorker;

            Debug.Assert(null != bw);

            try
            {
                BackgroundWorkCancelTracker tracker = new BackgroundWorkCancelTracker(bw);

                var settings = e.Argument as ExportSettings;
                Debug.Assert(null != settings);

                _DoExport(settings, tracker);

                if (tracker.IsCancelled)
                {
                    e.Cancel = true;
                }
            }
            catch (UserBreakException)
            {
                e.Cancel = true;
            }
        }
        private void _BackgroundWorkerDoWork(object sender, DoWorkEventArgs e)
        {
            Debug.Assert(sender is BackgroundWorker);
            Debug.Assert(e.Argument is IAsyncSolveTask);

            BackgroundWorker bw = sender as BackgroundWorker;
            try
            {
                BackgroundWorkCancelTracker tracker = new BackgroundWorkCancelTracker(bw);

                var task = (IAsyncSolveTask)e.Argument;
                var result = task.Run(tracker);

                if (tracker.IsCancelled)
                    e.Cancel = true;
                else
                    e.Result = result;
            }
            catch (UserBreakException)
            {
                e.Cancel = true;
            }
        }