怎么在线程中定时发送或接收数据
如何在线程中定时发送或接收数据?
我要在工控界面中创建几个通信线程,每个线程都要定时发送或接收数据,我所创建的是用户界面线程,请问如何在用户界面线程中创建定时器?或者编写代码实现类似定时器的功能?
------解决方案--------------------
先确认一下 你用的是不是CWinThread类
你这段重载的是不是类里面的RUN函数 这个函数是重载不是自己定义加的。
这是原模原样我可以定时运行的 CDownThread就是继承自CWinThread的,Run函数本来就是这类的成员 只是将它重载
GetMessage的返回值如果函数取得WM_QUIT之外的其他消息,返回非零值。如果函数取得WM_QUIT消息,返回值是零。如果出现了错误,返回值是-1。 所以只要不受到WM_QUIT消息循环是不会退出的, 你也可以用PeekMessage试试。 还有可以用调试器追踪一下看看是怎么退出循环的,因为这个设计不接受到WM_QUIT 或者从线程外强制终止是不会只运行一次的
我要在工控界面中创建几个通信线程,每个线程都要定时发送或接收数据,我所创建的是用户界面线程,请问如何在用户界面线程中创建定时器?或者编写代码实现类似定时器的功能?
------解决方案--------------------
先确认一下 你用的是不是CWinThread类
你这段重载的是不是类里面的RUN函数 这个函数是重载不是自己定义加的。
int CDownThread::Run()
{
// TODO: 在此添加专用代码和/或调用基类
MSG msg;
//while(::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE) )
while(::GetMessage(&msg,NULL,0,0))
{
switch(msg.message)
{
case WM_TIMER:
{
FtpDown();
}break;
}
}
ExitInstance();
return CWinThread::Run();
}
这是原模原样我可以定时运行的 CDownThread就是继承自CWinThread的,Run函数本来就是这类的成员 只是将它重载
GetMessage的返回值如果函数取得WM_QUIT之外的其他消息,返回非零值。如果函数取得WM_QUIT消息,返回值是零。如果出现了错误,返回值是-1。 所以只要不受到WM_QUIT消息循环是不会退出的, 你也可以用PeekMessage试试。 还有可以用调试器追踪一下看看是怎么退出循环的,因为这个设计不接受到WM_QUIT 或者从线程外强制终止是不会只运行一次的