Пример #1
0
        public void StartProcessingNonThreaded(IBackgroundWorkHelper backgroundWorkHelper)
        {
            if (MultithreadingEnabled)
            {
                return;
            }

            var e = new DoWorkEventArgs(backgroundWorkHelper);

            backgroundWorkHelper.BackgroundWorker_DoWork(this, e);

            MostRecentResult = e.Result;

            // MainBackgroundWorkHelper.BackgroundWorker_DoWork(this, e);
            // backgroundWorkHelper = MainBackgroundWorkHelper;
        }
Пример #2
0
        public ProcessWindow(IBackgroundWorkHelper backgroundWorkHelper, Window ownerWindow)
        {
            InitializeComponent();

            MultithreadingEnabled = true;

            Owner = ownerWindow;

            MainBackgroundWorker = new BackgroundWorker
            {
                WorkerReportsProgress      = true,
                WorkerSupportsCancellation = true
            };

            backgroundWorkHelper.HostProcessWindow = this;

            MainBackgroundWorkHelper = backgroundWorkHelper;

            MainBackgroundWorker.DoWork             += backgroundWorkHelper.BackgroundWorker_DoWork;
            MainBackgroundWorker.ProgressChanged    += backgroundWorkHelper.BackgroundWorker_ProgressChanged;
            MainBackgroundWorker.RunWorkerCompleted += backgroundWorkHelper.BackgroundWorker_RunWorkerCompleted;
        }
Пример #3
0
        internal static object Process(IBackgroundWorkHelper backgroundWorkHelper)
        {
            var processWindow = new ProcessWindow(backgroundWorkHelper, Application.Current.MainWindow);

            if (processWindow.MultithreadingEnabled)
            {
                if (processWindow.ShowDialog() == true)
                {
                    return(backgroundWorkHelper.Result);
                }
            }
            else
            {
                processWindow.Show();
                processWindow.StartProcessingNonThreaded(backgroundWorkHelper);
                processWindow.Close();

                MostRecentResult = processWindow.MostRecentResult;

                return(backgroundWorkHelper.Result);
            }

            return(null);
        }