public WebScraperBrowser CreateBrowser(WebScraperDispatcher appDispatcher) { Dispatcher threadDispatcher = null; TaskCompletionSource<bool> threadRunning = new TaskCompletionSource<bool>(); Thread thread = new Thread(new ThreadStart(() => { threadDispatcher = Dispatcher.CurrentDispatcher; threadRunning.SetResult(true); Dispatcher.Run(); })); thread.SetApartmentState(ApartmentState.STA); //thread.IsBackground = true; thread.Start(); threadRunning.Task.Wait(); Func<WebScraperBrowser> func = () => { var browser = new WebScraperBrowser(appDispatcher, threadDispatcher); return browser; }; WebScraperBrowser result = threadDispatcher.Invoke(func) as WebScraperBrowser; return result; }
public void Dispose(WebScraperBrowser browser) { Action<WebScraperBrowser> act = (b) => { browser.Dispose(); }; browser.Dispatcher.Invoke(act, browser); }
public ExternalScript(WebScraperBrowser browser) { _browser = browser; }