怎么在新建的线程中调用定时器
如何在新建的线程中调用定时器?
在主对话框中新创建了一个线程,然后在线程函数中调用设置定时器函数,运行出错,弹出警告框,提示定时器设置错误。
部分代码如下:
在主对话框的OnInitDialog函数中创建线程:
pThread = AfxBeginThread(ThreadFunc, &Info); //创建线程 2013-3-6
线程函数:
UINT ThreadFunc(LPVOID lpParam)
{
threadInfo* pInfo = (threadInfo*)lpParam;
CMAINDlg dlg;
dlg.SetTimer(1,3,NULL); //设置主函数的定时器1 接收分析数据 2013-3-6
MSG msg;
while (1)
{
GetMessage(&msg, NULL, 0, 0);
DispatchMessage(&msg);
}
return 0;
}
定时器函数:
void CMAINDlg::OnTimer(UINT nIDEvent)
{
Receive_Data(); //分析接收到的数据
}
函数的声明和变量定义等都不在这里写出来了。
请高手帮我指点下线程函数中如何调用定时器?万分感谢~
------解决方案--------------------
CMAINDlg dlg;
dlg.SetTimer(1,3,NULL); //设置主函数的定时器1 接收分析数据 2013-3-6
这样的代码咋行呢?对话框还没有创建呢,只是构造了一下。窗体对象还没有,无消息循环啊
------解决方案--------------------
那要看你这个函数干了些什么。如果用到了对话框的控件对象,同样是不行的。
------解决方案--------------------
在主对话框的OnInitDialog函数中创建线程:
pThread = AfxBeginThread(ThreadFunc, this); //创建线程 2013-3-6
线程函数:
UINT ThreadFunc(LPVOID lpParam)
{
CMAINDLG* p = (CMAINDLG*)lpParam;
p->SetTimer(1,3,NULL); //设置主函数的定时器1 接收分析数据 2013-3-6
while(1){ Sleep(1000); }
return 0;
}
定时器函数:
void CMAINDlg::OnTimer(UINT nIDEvent)
{
Receive_Data(); //分析接收到的数据
}
在主对话框中新创建了一个线程,然后在线程函数中调用设置定时器函数,运行出错,弹出警告框,提示定时器设置错误。
部分代码如下:
在主对话框的OnInitDialog函数中创建线程:
pThread = AfxBeginThread(ThreadFunc, &Info); //创建线程 2013-3-6
线程函数:
UINT ThreadFunc(LPVOID lpParam)
{
threadInfo* pInfo = (threadInfo*)lpParam;
CMAINDlg dlg;
dlg.SetTimer(1,3,NULL); //设置主函数的定时器1 接收分析数据 2013-3-6
MSG msg;
while (1)
{
GetMessage(&msg, NULL, 0, 0);
DispatchMessage(&msg);
}
return 0;
}
定时器函数:
void CMAINDlg::OnTimer(UINT nIDEvent)
{
Receive_Data(); //分析接收到的数据
}
函数的声明和变量定义等都不在这里写出来了。
请高手帮我指点下线程函数中如何调用定时器?万分感谢~
------解决方案--------------------
CMAINDlg dlg;
dlg.SetTimer(1,3,NULL); //设置主函数的定时器1 接收分析数据 2013-3-6
这样的代码咋行呢?对话框还没有创建呢,只是构造了一下。窗体对象还没有,无消息循环啊
------解决方案--------------------
那要看你这个函数干了些什么。如果用到了对话框的控件对象,同样是不行的。
------解决方案--------------------
在主对话框的OnInitDialog函数中创建线程:
pThread = AfxBeginThread(ThreadFunc, this); //创建线程 2013-3-6
线程函数:
UINT ThreadFunc(LPVOID lpParam)
{
CMAINDLG* p = (CMAINDLG*)lpParam;
p->SetTimer(1,3,NULL); //设置主函数的定时器1 接收分析数据 2013-3-6
while(1){ Sleep(1000); }
return 0;
}
定时器函数:
void CMAINDlg::OnTimer(UINT nIDEvent)
{
Receive_Data(); //分析接收到的数据
}