ACE 定时器

nizainade 2008-05-27 02:19:38
想在程序里加定时器,由于原来的程序是ACE写的,所以想用ACE实现,在网上找了测试代码
#include <ace/Reactor.h>
#include <ace/Log_Msg.h>

class MyTimer : public ACE_Event_Handler
{
public:
int handle_timeout( const ACE_Time_Value& current_time,
const void* act = 0 )
{
ACE_DEBUG( ( LM_INFO, "fasdfasf" ) );
return 0;
}
};

int ACE_TMAIN( int argc, ACE_TCHAR* argv[] )
{
ACE_Time_Value t1( 3 );
ACE_Time_Value t2( 6 );
MyTimer* mt = new MyTimer();

ACE_Reactor::instance()->schedule_timer( mt, 0, t1, t2 );
ACE_Reactor::instance()->run_reactor_event_loop();
return 0;
}

编译链接没错,运行时就有 the value of ESP was not properly saved across a function call 的错误,请问这是什么原因,另在c++里实现定时器还有什么方法
...全文
209 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
冷月清晖 2008-05-27
  • 打赏
  • 举报
回复
tempStr.Format("keepaliveTimer_%x",Local_IP);
//需要这个进程中唯一的一个字符串表示定时器
冷月清晖 2008-05-27
  • 打赏
  • 举报
回复
补充
其中
#define TIMER_KEEPALIVE 30000// 30 seconds
#define _SECOND 10000000
//KeepAliveProc为保活函数
冷月清晖 2008-05-27
  • 打赏
  • 举报
回复
ace定时器没玩过;
不过我用这个:
创建一个线程,线程函数如下:

DWORD WINAPI KeepAliveThread(LONG ID)
{
TCHAR szError[255];
HANDLE hTimer;
__int64 qwDueTime;
LARGE_INTEGER liDueTime;

/* ResvTimer */
CString tempStr;
tempStr.Format("keepaliveTimer_%x",Local_IP);
if ( hTimer = CreateWaitableTimer(NULL, FALSE,(LPCSTR)tempStr ) )
{
// Create an integer that will be used to signal the timer
// 5 seconds from now.
qwDueTime = (-5) * _SECOND;
// Copy the relative time into a LARGE_INTEGER.
liDueTime.LowPart = (DWORD) ( qwDueTime & 0xFFFFFFFF );
liDueTime.HighPart = (LONG) ( qwDueTime >> 32 );
if ( SetWaitableTimer(hTimer, &liDueTime, TIMER_KEEPALIVE/*Periodic timer interval of 30 seconds*/,
KeepAliveProc,NULL, FALSE ) ) //每30秒执行一次这个保活函数
{
TRACE("Called the KeepAliveProc to send keep alive messages .\n");
while (RunFlag)
{
SleepEx( INFINITE,TRUE );
}
}
else
{
wsprintf( szError, "SetWaitableTimer failed with Error \
%d.", GetLastError() );
MessageBox( NULL, szError, "Error", MB_ICONEXCLAMATION );
}

CloseHandle( hTimer ); // END of timer
}
return 0;
}

64,647

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧