簡體   English   中英

從線程更新進度條的最佳方法

[英]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.

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