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