Winform WebBrowser контроль медленно, чтобы загрузить. Лучший метод для предварительной загрузки?

StackOverflow https://stackoverflow.com/questions/3086063

Вопрос

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

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

какие-либо предложения?

Это было полезно?

Решение

Вы можете предварительно загрузить элементы управления во время запуска приложения, в отдельном потоке. Обратите внимание на состояние квартиры 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();
        }
    }

}

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top