簡體   English   中英

替代 Application.DoEvents()

[英]Alternative to Application.DoEvents()

我正在開發一個基於 webBrowser 控件的消息傳遞系統,以便我可以隨意格式化文本。 當用戶離線並收到消息時,消息會被存儲並在他們重新登錄時為每條消息發送一個事件。當我為網站設置默認 html 等時,我通常使用:

while (this.webBrowser1.ReadyState != WebBrowserReadyState.Complete) Application.DoEvents();

這在程序正常運行時有效。 當用戶在離線時收到發送的消息時,這會觸發下一條消息事件,依此類推,每條消息直到最后一條。 這意味着他們離線時發送的最后一條消息是唯一顯示的消息。 我想要像 Application.DoEvents() 這樣的東西,它允許控件不斷更新和加載,但不會觸發其他事件。

謝謝

編輯:

我通過完全刪除 DoEvents() 解決了這個問題。 我沒有在工作時更改 DocumentText,而是設置了一個字符串生成器,然后在最后一次設置了 html。

我建議您停止使用Application.DoEvents() ,它產生的問題多於解決的問題。 檢查這個

更好的方法是在加載完成時使用AutoResetEvent進行通知,或者在加載完成時引發事件。 您也可以在另一個線程上運行等待,因此不必使用Application.DoEvents() ...

您可以使用 System.Threading.Thread.Join() 作為 DoEvents() 的替代方法,因為此方法會暫停當前線程的執行,直到前面的調用線程完成執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM