Pregunta

Tenemos una vista de resumen de nuestra aplicación WinForm que utiliza un control WebBrowser para mostrar la información de resumen de una página web. Estamos utilizando esto para ganar un poco de diseño tabular rica que no se podía lograr mediante controles winform estándar. la primera vez que se muestra la vista en el cliente que toma un tiempo para hacer girar hacia arriba (el lanzamiento de IE en el fondo supongo) y las aplicaciones se congela durante unos cuantos segundos. Estoy pensando en algún tipo de mecánica de pre-carga que conseguir IE giró en marcha en el fondo y le gustaría alguna orientación comunidad.

Estoy considerando el lanzamiento de un fuera de la pantalla o de forma invisible con un control WebBrowser en el arranque de aplicaciones o el lanzamiento de una instancia de IE en una especie de hilo de lado en el arranque de aplicaciones.

alguna sugerencia?

¿Fue útil?

Solución

Se puede cargar previamente los controles durante el inicio de la aplicación, en un hilo separado. Tenga en cuenta el estado de apartamento STA, que es obligatoria si se quiere manipular algunos objetos COM (como el 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();
        }
    }

}

Otros consejos

No he experimentado los retardos de puesta en marcha que mencionas, sino como una idea, en el arranque que podía navegar a about:blank. Luego, en caso de DocumentCompleted navegador que podría poner en marcha un sistema de navegación a la URL correcta. Eso podría ayudar a entender si es su "IE spin-up" que está teniendo todo el tiempo o la consulta de contenido y hacer.

En cuanto a su arquitectura, a menos por supuesto, su "disposición tabular ricos" ya está construido y completamente funcional, entonces podría considerar el uso de WPF (que tiene una buena historia integración WinForms también) con el fin de obtener algunos controles más ricas y más sexy en su aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top