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; }
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; }
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); }