Question

Nous avons une vue sommaire dans notre application Winform qui utilise un contrôle WebBrowser pour afficher les informations de synthèse à partir d'une page Web. Nous utilisons cela pour gagner un peu riche mise en page de tableau que nous ne pouvions pas accomplir en utilisant les contrôles WinForm standard. la première fois la vue est affichée sur le client prend un certain temps à tourner (IE lancement en arrière-plan, je suppose) et les gels app pendant quelques secondes. Je songe à une sorte de mécanicien pré-chargement qui obtiendrait IE filée en arrière-plan et aimerais avoir des conseils communautaires.

J'envisage de lancer un hors écran ou sous forme invisible avec un contrôle WebBrowser au démarrage de l'application ou de lancer une instance IE dans une sorte de fil de côté au début de l'application.

suggestions?

Était-ce utile?

La solution

Vous pouvez précharger les commandes lors du démarrage de l'application, dans un thread séparé. Notez l'état de l'appartement de STA, qui est obligatoire si vous souhaitez manipuler certains objets COM (comme le navigateur Web).

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();
        }
    }

}

Autres conseils

Je n'ai pas connu les retards de démarrage que vous mentionnez, mais comme une idée, sur vous démarrage pourrait accéder à about:blank. Puis sur l'événement DocumentCompleted du navigateur, vous pouvez lancer une navigation à votre URL appropriée. Cette aide pourrait vous comprendre si c'est votre « spin-up IE » qui prend tout le temps ou la requête de contenu et de rendre.

En termes de votre architecture, à moins bien sûr votre « riche mise en page tabulaire » est déjà construit et entièrement fonctionnel, vous pouvez envisager d'utiliser WPF (il a une bonne histoire d'intégration WinForms aussi) afin d'obtenir des contrôles plus riches et plus sexy en votre application.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top