我正在开发一个MFC项目,我需要一个单独的循环,它将连续运行或每隔几秒运行一次,并且每次可能需要或不需要运行Dialog来获取用户的一些输入。我正在考虑使用AfxBeginThread,但从我所读到的内容来看,它并不适用于连续循环。
答案 0 :(得分:1)
不要这样做。你不能只是在工作线程中删除对话框。它们只能在主线程中启动,因为它们需要消息泵才能运行。
如果您想要的是每隔几秒发射一次的某种信号,那么您想要的是timer。设置所需计时器周期的计时器,当主线程处理完所需的WM_TIMER消息时,您可以弹出一个对话框并执行操作。
如果您希望您的工作线程做一些工作,可能包括或不包括要求用户提供信息,那么您需要查看让您的线程使用PostMessage()向其发送消息主线程,通过询问用户数据,然后通过输入数据将信号发送回工作线程来处理主线程中的消息。完成最后一步的一种方法是通过主线程调用QueueUserAPC(),使用工作线程的句柄和指向函数的指针,该函数使用新输入的数据执行某些操作。