2014-04-19 5 views
0

내가 어떻게 Firebreath 플러그인 프레임 워크를 사용하여 주 스레드에서 정기적 인 타이머 콜백을 만들 수 있습니다 알아? 나는 FB :: Timer :: getTimer (1, true, EventRunLoop)를 시도했다. StaticInitialize(). 나는 EventRunLoop 함수가 메인 스레드에서 실행되지 않고 생성 된 dll 플러그인으로 디버깅 할 때 EventRunLoop으로 중단된다는 것을 알았습니다. VC++ express 2008은 항상 메인 스레드 대신 작업자 스레드 였음을 나타냅니다.Firebreath 타이머 콜백 메인 스레드

FB : Timer는 boost :: asio에 대한 래퍼라는 것을 알고 있습니다. boost를 사용하여 async_wait를 만들려면 boost :: asio :: io_service io.run() 함수를 주 스레드에 넣어야합니다. 그러나 NPAPI 또는 Firebreath의 주요 스레드에 실제로 액세스하는 방법에 대해서는 알지 못합니다. 왜냐하면 모든 기능이 이벤트 기반의 대부분이기 때문입니다.

답변

1

FB::Timer을 사용하고 m_host->scheduleOnMainThread을 사용하여 주 스레드로 콜백하는 것이 좋습니다.

창만 있으면 WM_TIMER를 사용할 수 있습니다.

FireBreath 코드베이스의 FBTestPlugin 예에서이 모든 것의 예가 있습니다.