我想在OnTimer中使用AfxBeginThread,如下所示:
void CFrame::OnTimer(UINT nIDEvent)
{
if(nIDEvent==definedid)
funA();
//funB();
}
bool CFrame::funA()
{
m_pThreadExecute = AfxBeginThread(threadFun, &threadPar, ThreadPry);
}
bool CFrame::funB()
{
//do something without thread
}
int threadFun(LPVOID lpVoid)
{
//do something
}
我设置计时器1秒,如果我调用funB(),做一些没有线程的东西,这个计时器每秒运行一次,通常;如果我调用funA(),这个计时器只运行一次,我如何在OnTimer中使用AfxBeginThread? 谢谢!
答案 0 :(得分:0)
AfxBeginThread,是吗? 您似乎使用MFC CWnd::SetTimer,但它只是Win32 API SetTimer的包装器。您可以尝试使用Win32 API SetTimer执行相同的操作,并尝试传递NULL而不是窗口句柄。如果再次调用此类SetTimer调用,则提供NULL窗口句柄会导致更换计时器。一个example。
和/或您最好只使用不会打扰其他内容的Win32 API CreateThread。
另一方面,你所做的似乎有点奇怪。是否需要始终启动新线程?如果没有,我们可能会想出一个替代方案。启动线程,特别是太多线程,没有实际需要通常是一种产生不必要的错误和复杂的方法。