internal AbstractWebBrowserConfigurationRunner(ThreadWrapperFactory threadWrapperFactory, WebBrowserFactory webBrowserFactory, WebBrowserConfigurationRunnerProcessor webBrowserConfigurationRunnerProcessor, WebBrowserDisposerFactory webBrowserDisposerFactory)
 {
     WebBrowserFactory    = webBrowserFactory;
     ThreadWrapperFactory = threadWrapperFactory;
     WebBrowserConfigurationRunnerProcessor = webBrowserConfigurationRunnerProcessor;
     WebBrowserDisposerFactory = webBrowserDisposerFactory;
 }
 internal ThreadLockWebBrowserConfigurationRunner(ThreadWrapperFactory threadWrapperFactory,
                                                  WebBrowserFactory webBrowserFactory,
                                                  WebBrowserConfigurationRunnerProcessor
                                                  webBrowserConfigurationRunnerProcessor,
                                                  WebBrowserDisposerFactory webBrowserDisposerFactory) :
     base(threadWrapperFactory,
          webBrowserFactory,
          webBrowserConfigurationRunnerProcessor,
          webBrowserDisposerFactory)
 {
 }
        public void Run(IDataWebScraperConfiguration dataWebScraperConfiguration)
        {
            _webBrowserConfigurationRunnerProcessorWascompleted = false;
            WebBrowserConfigurationRunnerProcessor.WebBrowserConfigurationRunnerProcessorWasCompleted += WebBrowserConfigurationRunnerProcessor_WebBrowserConfigurationRunnerProcessorWasCompleted;

            _threadWrapper = ThreadWrapperFactory.GetThreadWrapper(new ParameterizedThreadStart(ProcessDataWebScraperconfigurationInWebBrowser));
            _threadWrapper.SetApartmentState(ApartmentState.STA);
            _threadWrapper.Start(dataWebScraperConfiguration);
            if (WaitForProcessToBeCompleted)
            {
                while (!_webBrowserConfigurationRunnerProcessorWascompleted)
                {
                    Thread.Sleep(1000);
                }
            }
        }