我有一個循環經歷了一些值。每迭代一個值,就會將一個頁面加載到web瀏覽器控件中(將值作爲參數傳遞),並且在加載並讀取頁面時,循環應轉到列表中的下一個值並繼續,直到處理完所有值。我需要一種方式來暫停過程,同時網站異步加載,然後在頁面加載/讀取過程完成後恢復。一個更好的方式來等待一個變量來改變狀態VB.Net
我做的方法是通過使用這樣的事情,其中「ReadingInProgress」是一個全局變量:
ReadingInProgress = True
wb.Navigate("http://mywebsite.com/mypage.aspx" & c)
While ReadingInProgress
Application.DoEvents()
End While
的「DocumentCompleted」的webrowser控制組「ReadingInProgress」的虛假事件,這導致同時循環退出並恢復程序。這有效,但我意識到它會給CPU帶來壓力。有沒有更好,更少CPU密集的方式來做到這一點?
謝謝!
而不是在循環中等待,爲什麼不把循環後發生的代碼移動到DocumentCompleted事件處理程序呢? –
我不能這樣做,因爲代碼不會在循環後發生,而是在循環內部發生。已經有一些在Web瀏覽器的DocumentCompleted上執行的代碼。我希望循環等待,直到它被執行,然後移動到列表中的下一個項目。換句話說,我需要將.Navigate命令更改爲同步命令。 – Osprey
目前還不清楚爲什麼你不能從'DocumentCompleted'事件處理程序中調用'Navigate'方法。 –