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 № 1Non 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".