2

我有一个在线程中执行的长时间运行的任务。

这一切的代码都发生在一个单独的类中,而不是WinMain()入口点,比如说WorkerClass

我想经常随着任务的进度更新进度条。

经过几个小时的研究、试验和错误,我遇到了几种方法:


A)PostMessage从线程内部自定义到主窗口proc (问题:被几个来源不赞成:线程不应该接触主UI)

B)从某些函数自定义PostMessage到主窗口proc (问题:在自由与类函数之间遇到范围问题,因为线程函数必须是自由的)WorkerClass

C)工作线程更新int指针,然后 UI 线程计时器定期更新 UI (问题:值得花时间,或者这是“做错了”)


很多讨论都涉及到我不感兴趣的 MFC 或 C#。

我已经到了所有三种方法都遇到障碍的地步。搞定一个好工作需要几个小时——我不想费力地把它弄错。

我应该追求哪一个?

4

1 回答 1

2

FWIW:我目前处理的代码库向主线程发布了一条消息。

另一种方法,也是我更喜欢的一种,是观察者模式。主线程将“订阅”工作者,并且每当工作者更新自己时,它都会通知其观察者(订阅它的任何对象)。 http://en.wikipedia.org/wiki/Observer_pattern

于 2012-11-22T03:30:54.350 回答