VC写的DLL动态库,给JAVA调用,JNI方式,DLL中的定时器不能正常工作,是怎么回事?

ggw007 2016-12-19 05:34:21
VC写的DLL动态库,给JAVA调用,JNI方式,DLL中的定时器不能正常工作,是怎么回事?

急啊,求高手解答。
...全文
288 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ggw007 2017-01-05
  • 打赏
  • 举报
回复
嗯,JAVA环境没有消息机制,加了一个线程,定时器放在线程中,加上消息处理机制,用PostThreadMessage()发送消息 DWORD CPCView::TimerManagerProc(LPVOID lpParam) { CPCView * pView = (CPCView*)lpParam; BOOL bRet; MSG msg; PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE) ; while(GetMessage(&msg,NULL,0,0)) { if(msg.message == WM_USER+100) { if(pView->m_TimerId == 0) { pView->m_TimerId = SetTimer(NULL, 0, 1000, (TIMERPROC)CPCView::TimerProc); } else { pView->m_TimerId = SetTimer(NULL, pView->m_TimerId, 1000, (TIMERPROC)CPCView::TimerProc); } } } else { TranslateMessage(&msg); DispatchMessage(&msg); } } return 0; } KillTimer不需要在线程中调用。 多媒体定时器”timeSetEvent“没有测试 能不能用,定时器队列CreateTimerQueue()是可以的
赵4老师 2016-12-20
  • 打赏
  • 举报
回复
引用 6 楼 Dobzhansky 的回复:
在不具备窗口的环境中, 比如 windows 服务中 用定时器队列, 后来发现比较好用, 在桌面程序中也用了。

  m_hTimerQueue = CreateTimerQueue();
  if (m_hTimerQueue == NULL) {
    return false;
  }

  BOOL flag = CreateTimerQueueTimer(&m_hTimer,
    m_hTimerQueue,
    TimerRoutine,
    this,
    5000,
    2000,
    0);
涨姿势了。
Dobzhansky 2016-12-20
  • 打赏
  • 举报
回复
在不具备窗口的环境中, 比如 windows 服务中
用定时器队列, 后来发现比较好用, 在桌面程序中也用了。

m_hTimerQueue = CreateTimerQueue();
if (m_hTimerQueue == NULL) {
return false;
}

BOOL flag = CreateTimerQueueTimer(&m_hTimer,
m_hTimerQueue,
TimerRoutine,
this,
5000,
2000,
0);
oyljerry 2016-12-20
  • 打赏
  • 举报
回复
DLL中定时器需要消息循环,窗口等。你在JAVA中调用,它不能支持。
玉宇逍遥 2016-12-20
  • 打赏
  • 举报
回复
就像楼上几位说的,SetTimer是会出现问题的。不过你可以用“多媒体定时器”timeSetEvent。
Yofoo 2016-12-19
  • 打赏
  • 举报
回复
是用SetTimer? SetTimer 依赖线程的消息队列, 需要消息引擎, 回调函数是在系统的默认消息处理函数中去调用的 如果没这玩意回调函数会没用 MSDN When you specify a TimerProc callback function, the default window procedure calls the callback function when it processes WM_TIMER
  • 打赏
  • 举报
回复
dll中开线程吧,这样稍微好一些。
Dobzhansky 2016-12-19
  • 打赏
  • 举报
回复
什么类型的定时器, java 的线程结构比较复杂
  • 打赏
  • 举报
回复
干嘛把定时器封装在DLL里面呢

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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