如何让我的程序在执行下一个语句之前等到网页完成加载。我试过Process :: WaitForInputIdle();但它不会等待。
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();
答案 0 :(得分:2)
你做不到。这里的问题是Firefox在加载网页时不会回传。例如,当Firefox在打开网页之前想要自我更新时,您将看到问题。加载页面时如何回复?在这两者之间,整个firefox.exe可执行文件已被替换,并且与Process
的连接已经很久没有了。
WaitForInputIdle
做了一项非常具体的工作,这不是你所期望的。 Windows通过消息泵工作。当你例如将鼠标移到窗口上,将消息发送到该窗口。当应用程序处理了收到的第一条消息时,WaitForIdleInput
返回,因此当Windows知道它是“响应”时。