0

我正在开发一个 MFC 项目,我需要一个单独的循环,该循环将连续运行或每隔几秒钟运行一次,并且每次它可能需要也可能不需要运行 Dialog 来获取用户的一些输入。我正在考虑使用 AfxBeginThread,但从我所读到的内容来看,它实际上不适用于连续循环。

4

1 回答 1

1

不要这样做。您不能只在工作线程中撕掉对话框。它们只能在主线程中启动,因为它们需要消息泵才能运行。

如果您想要的只是每隔几秒钟触发一次的某种信号,那么您想要的是一个计时器。为您想要的计时器周期设置计时器,当您的主线程处理所需的 WM_TIMER 消息时,您可以弹出一个对话框并执行您的操作。

如果您希望您的工作线程做一些工作,这可能包括也可能不包括向用户询问信息,那么您需要考虑让您的线程使用PostMessage()向主线程发送消息,处理通过向用户询问数据,然后将信号与输入数据一起发送回工作线程,在主线程中发送消息。完成最后一点的一种方法是从主线程调用QueueUserAPC()并使用工作线程的句柄和指向对新输入的数据执行某些操作的函数的指针。

于 2010-09-13T19:33:20.003 回答