我有一个在线程中执行的长时间运行的任务。从线程更新进度栏的最佳方法
这一切的代码发生在与WinMain()
入口点不同的类中,例如WorkerClass
。
我希望每隔一段时间更新一次进度条,以便随时了解任务的进度。
几个小时的研究,试验和错误之后,我遇到的几种方法:
A)自PostMessage
到主窗口过程从线程(问题里面:由几个皱眉来源:线程不应该从一些WorkerClass
功能(问题点触控主UI)
B)自定义PostMessage
主窗口过程:运行到免费VS类函数之间的范围问题,因为线程函数必须是免费的类)
C)工作线程更新int
指针,那么UI线程计时器更新UI定期(提出问题:在值得花时间,或者这是 “做错了”)
很多讨论涉及MFC或C#,我不感兴趣。
我到了用三种方法遇到障碍的地步。做好一件事要花好几个小时 - 我不想费力去学习它。
我应该追求哪一个?
好吧,这听起来像代码库使用'A',但你更喜欢'B'? – Ben
我更喜欢主线程在工作线程中注册的地方。然后,当工作线程更新其进程时,其“UpdateProgress()”函数遍历所有订户并调用其“ProgressUpdated()”函数 - 实质上是一个回调函数。 –
谢谢,结合我的下一个问题(http://stackoverflow.com/questions/13506377/trouble-referencing-class-in-structure-using-this-keyword#13506421)我现在有东西工作得很好。 – Ben