public WebScraperDispatcher()
        {
            _currentDispatcher = Dispatcher.CurrentDispatcher;
            _currentAppDomain = AppDomain.CurrentDomain;
            _browsers = new Dictionary<string, WebScraperBrowser>();
            _appAndDispatcherSetted = new TaskCompletionSource<bool>();
            
            _mainThread = new Thread(new ParameterizedThreadStart((dispatcher) =>
                        {
                            var parentDispatcher = dispatcher as WebScraperDispatcher;
                            var threadDispatcher = WebScraperApplication.CurrentDispatcher;
                            
                            WebScraperApplication threadApp = new WebScraperApplication();

                            parentDispatcher.SetApplication(threadApp, threadDispatcher);
                            threadApp.Run();
                        }));
            _mainThread.SetApartmentState(ApartmentState.STA);
            _mainThread.Start(this);

            _appAndDispatcherSetted.Task.Wait();
        }
 private void SetApplication(WebScraperApplication app, Dispatcher appDispatcher)
 {
     _app = app;
     _appDispatcher = appDispatcher;
     _appAndDispatcherSetted.SetResult(true);
 }