[英]Best way to update progress bar from thread
我有一個在線程中執行的長時間運行的任務。
這一切的代碼都發生在一個與WinMain()
入口點不同的類中,比如WorkerClass
。
我想經常隨着任務的進度更新進度條。
經過幾個小時的研究、試驗和錯誤,我遇到了幾種方法:
A) 從線程內部自定義PostMessage
到主窗口 proc (問題:有幾個來源不贊成:線程不應該接觸主 UI)
B) 從一些WorkerClass
函數到主窗口 proc 的自定義PostMessage
(問題:在自由函數與類函數之間WorkerClass
范圍問題,因為線程函數必須是自由的類)
C) 工作線程更新int
指針,然后 UI 線程計時器定期更新 UI (問題:值得花時間,還是“做錯了”)
很多討論都深入到我不感興趣的 MFC 或 C# 中。
我已經到了使用所有三種方法都遇到障礙的地步。 弄清楚一個問題需要幾個小時 - 我不想努力學習錯誤。
我應該追求哪一個?
FWIW:我目前工作的代碼庫向主線程發布了一條消息。
另一種方法,也是我更喜歡的方法,是觀察者模式。 主線程會“訂閱”worker,每當worker更新自己時,它會通知它的觀察者(訂閱它的任何對象)。 http://en.wikipedia.org/wiki/Observer_pattern
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.