我試圖在同一個IE9會話中打開多個網頁。似乎我在打開第一個網址之前必須等待一段時間,然後才能打開其餘的網址,但使用Thread.Sleep看起來似乎很駭人聽聞。有什麼辦法可以做得更好嗎?在IE9中使用流程打開多個選項卡
foreach (string url in urls)
{
try
{
if (!isLaunched)
{
Process p = new Process();
p.StartInfo.FileName = browser;
p.StartInfo.Arguments = url;
p.Start();
Thread.Sleep(1000); // somewhere between 500 and 1000
isLaunched = true;
}
else
{
Process.Start(url);
}
}
}
注:如果我不等待的時間,我將結束與一個瀏覽器會話與一個頁面(最後一頁
更新: - 我試過p.WaitForInputIdle()但它沒有工作 - 每http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/fe4be58f-9c9d-4e52-8ced-e3cd9c1bbee7我也試過
int i = 0;
while (i == 0)
{
Console.WriteLine("[email protected]!");
Thread.Sleep(100);
p.Refresh();
i = p.MainWindowHandle.ToInt32();
}
,但得到了一個錯誤:
Process has exited, so the requested information is not available.
at System.Diagnostics.Process.EnsureState(State state)
at System.Diagnostics.Process.get_MainWindowHandle()
Update2: 下面的代碼工作(等待IE9啓動退出),但仍然需要Thread.Sleep(100)。任何更少的,它有時只是把一部分的網站up ......不...從頭開始,這隻有在IE會話已經存在時纔有效。進程退出是因爲它將url移交給了現有的IE會話。
不工作,如果你做了Thread.Sleep任何短於約1000毫秒,所以我認爲它仍然沒有做正確的事情。 (如果目標計算機真的很慢?) – tofutim 2011-06-01 19:03:09
那麼我懷疑你的程序沒有用戶界面? – 2011-06-01 19:09:24
本程序是否具有UI有什麼區別? – tofutim 2011-06-01 19:13:33