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