ACE_ZhangXinfa 发表于 2009-4-29 19:51:29

ACE定时器用在MFC和动态库中遇到问题,请各位进来瞅瞅

大家好:
   最近要使用ACE做一个消息分发中心动态库,然后使其被一个MFC应用程序调用,遇到以下问题:
         ACE_Reactor::run_event_loop单独运行在一个线程中
         向ACE_Reactor注册I/O事情时,handle_input和handle_output都可正常被回调,
      而使用schedule_timer触发定时器时,handle_timeout并不能被回调,
       而且我改成使用ACE_Thread_Timer_Queue_Adapter也不能正常工作,
      将其单独做成一个控制台进程,定时器可正常使用,
      想向大家请教一下在MFC中或在动态库中使用ACE的定时器有什么需要注意的?

      我使用了以下两种方法创建ACE_Reactor实例,handle_timeout都不能被回调:
       1,使用全局的反应堆: ACE_Reactor::instance()(听说做成动态库时不建议使用这种方案 )
       2,自己new一个反应堆, ACE_WFMO_Reactor *wfmo_reactor = new ACE_WFMO_Reactor;
            ACE_Reactor *reactor_ = new ACE_Reactor(wfmo_reactor);

      我已经作了ACE的初始化工作,所以应该不是初始化出现问题的,请大家看看,是什么原因,多谢了!~~

winston 发表于 2009-4-29 20:59:37

有代码有真相。猜不出。上代码。

modern 发表于 2009-4-30 13:22:50

ACE::init()调用了么?

ACE_ZhangXinfa 发表于 2009-5-3 12:02:07

已经找出问题了,是反应堆创建线程和运行线程不同造成的,使用owner(...)就可以了,多谢大家的回帖
页: [1]
查看完整版本: ACE定时器用在MFC和动态库中遇到问题,请各位进来瞅瞅