我有一个在线程中执行的长时间运行的任务。
这一切的代码都发生在一个单独的类中,而不是WinMain()
入口点,比如说WorkerClass
。
我想经常随着任务的进度更新进度条。
经过几个小时的研究、试验和错误,我遇到了几种方法:
A)PostMessage
从线程内部自定义到主窗口proc (问题:被几个来源不赞成:线程不应该接触主UI)
B)从某些函数自定义PostMessage
到主窗口proc (问题:在自由与类函数之间遇到范围问题,因为线程函数必须是自由的)WorkerClass
C)工作线程更新int
指针,然后 UI 线程计时器定期更新 UI (问题:值得花时间,或者这是“做错了”)
很多讨论都涉及到我不感兴趣的 MFC 或 C#。
我已经到了所有三种方法都遇到障碍的地步。搞定一个好工作需要几个小时——我不想费力地把它弄错。
我应该追求哪一个?