/ / C # Rendere il programma in attesa del completamento del caricamento della pagina Web del browser - c #, .net

C # Fare in modo che il programma attenda che il browser finisca di caricare la pagina web - c #, .net

Come faccio ad attendere che il mio programma finisca il caricamento della pagina prima di eseguire la prossima dichiarazione. Ho provato Process :: WaitForInputIdle (); ma non aspetta.

ProcessStartInfo pInfo = new ProcessStartInfo("firefox.exe");

pInfo.Arguments = "http://example.com";

Process p  = Process.Start(pInfo);

p.WaitForInputIdle();

pInfo.Arguments = "http://example.net";

p = Process.Start(pInfo);

p.WaitForInputIdle();

risposte:

2 per risposta № 1

Non puoi "t. Il problema qui è che Firefox non comunica indietro quando la pagina Web è stata caricata. Ad esempio, vedrai problemi quando Firefox vuole aggiornarsi prima di aprire la pagina web. Come potrà comunicare di nuovo quando la pagina viene caricata? Nel mezzo, l'intero eseguibile firefox.exe è stato sostituito e la connessione con il tuo Process è stato a lungo perso.

Il WaitForInputIdle fa un lavoro molto specifico, e questo non è quello che ti aspetti. Windows funziona tramite un pump dei messaggi. Quando ad es. sposta il mouse su una finestra, un messaggio viene inviato a quella finestra. WaitForIdleInput ritorna quando l'applicazione ha elaborato il primo messaggio ricevuto, quindi quando Windows sa che è "reattivo".