WinForm WebBrowser Control медленно загружается. Лучший метод для предварительной загрузки? - PullRequest
3 голосов
/ 21 июня 2010

У нас есть сводное представление в нашем приложении winform, которое использует элемент управления WebBrowser для отображения сводной информации с веб-страницы.Мы используем это, чтобы получить богатый табличный макет, который мы не смогли бы выполнить с помощью стандартных элементов управления winform.в первый раз, когда представление отображается на клиенте, требуется некоторое время, чтобы ускориться (запуск IE в фоновом режиме, я полагаю), и приложение зависает на довольно много секунд.Я рассматриваю какую-то механику предварительной загрузки, которая привела бы к раскрутке IE в фоновом режиме и хотела бы получить рекомендации от сообщества.

Я рассматриваю возможность запуска неэкранной или невидимой формы с элементом управления веб-браузерапри запуске приложения или при запуске экземпляра IE в каком-то побочном потоке при запуске приложения.

есть предложения?

Ответы [ 2 ]

3 голосов
/ 09 июля 2012

Вы можете предварительно загрузить элементы управления во время запуска приложения в отдельном потоке. Обратите внимание на состояние квартиры STA, которое является обязательным, если вы хотите манипулировать некоторыми COM-объектами (например, WebBrowser).

public static class ControlPreloader
{


    public static void PreloadAsync()
    {
        var thread = new Thread(Preload);
        thread.SetApartmentState(ApartmentState.STA);
        thread.Start();
    }

    private static void Preload()
    {
        using (var hostForm = new Form())
        {
            var control = new WebBrowser();
            hostForm.Controls.Add(control);
            control.CreateControl();

            hostForm.Close();
        }
    }

}
2 голосов
/ 21 июня 2010

Я не испытывал задержек при запуске, о которых вы упомянули, но, как идея, при запуске вы можете перейти к about:blank. Затем на событии браузера DocumentCompleted вы можете начать навигацию к нужному URL. Это может помочь вам понять, занимает ли вас «раскрутка IE» все время или запрос контента и визуализация.

С точки зрения вашей архитектуры, если, конечно, ваша «богатая табличная разметка» уже построена и полностью функциональна, то вы можете рассмотреть возможность использования WPF (он также имеет хорошую историю интеграции с WinForms), чтобы получить более богатые и сексуальные элементы управления ваше приложение.

...