Domanda

Abbiamo una visione di sintesi nel nostro WinForm app che utilizza un controllo WebBrowser per visualizzare le informazioni di riepilogo da una pagina web. Stiamo usando questo per guadagnare un po 'ricca di layout tabellare che non siamo riusciti a realizzare utilizzando i controlli WinForm standard. la prima volta che viene visualizzata la vista sul client che ci vuole un po 'per spin up (il lancio di IE sullo sfondo presumo) e si blocca app per un bel paio di secondi. Sto pensando di una sorta di pre-carico meccanico che otterrebbe IE filata-up in background e vorrebbe una guida della comunità.

Sto pensando di lanciare un off-screen o forma invisibile con un controllo WebBrowser alla partenza app o il lancio di un'istanza di IE in una sorta di filo lato alla partenza app.

qualche suggerimento?

È stato utile?

Soluzione

È possibile precaricare i controlli durante l'avvio dell'applicazione, in un thread separato. Si noti lo stato di apartment STA, che è obbligatorio se si vuole manipolare alcuni oggetti COM (come il browser 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();
        }
    }

}

Altri suggerimenti

Non ho sperimentato i ritardi di avviamento che hai citato, ma come idea, in fase di start-up che si potrebbe passare a about:blank. Poi sulla manifestazione DocumentCompleted del browser si potrebbe dare il via una navigazione alla tua URL corretto. Che potrebbe aiutare a capire se è il tuo "IE spin-up" che sta prendendo tutto il tempo o la query di contenuti e rendere.

In termini di architettura, a meno che naturalmente il vostro "ricco di layout tabellare" è già costruito e perfettamente funzionante quindi si potrebbe considerare l'utilizzo di WPF (ha una buona WinForms storia di integrazione troppo) al fine di ottenere alcuni controlli più ricchi e più sexy in la vostra applicazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top