Приложение заблокировано в потоке webBrowser - PullRequest
0 голосов
/ 27 мая 2019

Мое приложение блокируется (статическое) при попытке прокрутки в браузере. Я пытаюсь сделать медленную прокрутку, которая запускает всю страницу. Основная проблема связана с темами, но я не знаю, как ее решить.

public partial class Form1 : Form
{


    public Form1()
    {
        InitializeComponent();
    }

    Thread h1;
    int cont = 0;
    string[] arrayUrls = new[] { "https://www.bbc.com/", "https://php.net/", "https://www.nytimes.com/" };

    private void button_start_Click(object sender, EventArgs e)
    {
        h1 = new Thread(new ThreadStart(startApplication));
        h1.Start();
    }

    private void startApplication() {
        if (cont < arrayUrls.Count())
        {
            ThreadController.InvokeIfRequired(webBrowser1, () =>
            {
                webBrowser1.ScriptErrorsSuppressed = true;
                webBrowser1.Navigate(arrayUrls[cont]);
            });
        }
        else {
            MessageBox.Show("end of the program");
        }
    }

    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        var br = sender as WebBrowser;
        if (br.Url == e.Url)
        {
            cont++;
            ThreadController.InvokeIfRequired(webBrowser1, () =>
            {
                int hightWeb = webBrowser1.Document.Window.Size.Height;

                for (int i = 0; i < hightWeb; i = i + 100)
                {
                    webBrowser1.Document.Window.ScrollTo(0, i);

                    //Sleep 50 miliseconds
                    Thread.Sleep(50);
                }

            });

            startApplication();
        }
    }
}

static class ThreadController
{
    public static void InvokeIfRequired(this Control control, MethodInvoker action)
    {
        if (control.InvokeRequired)
        {
            control.Invoke(action);
        }
        else
        {
            action();
        }
    }
}

Я хочу имитировать движение человека с помощью свитка, чтобы показать, что приложение работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...