我目前正在使用异步回调通过Window的Sensor API获取运动数据。现在,我想通过Windows 10控制台应用程序(不是Windows应用程序)测试功能。为简化起见,我目前遇到的问题与How to cause my C++ program to wait for sensor events for ever and not terminate完全相同,其中
while(true) { hr = sensor->SetEventSink(pMyEvents); }
触发事件,我得到了一致的数据,但正确的用法应该只是
hr = sensor->SetEventSink(pMyEvents);
,它将异步触发事件。
我还使用CoInitializeEx(NULL, COINIT_MULTITHREADED);
在COM中允许多线程。
在上述SO链接的注释中,两个用户提到“您正在忘记Windows消息事件循环。”我不想为该程序提供图形界面,更重要的是,我不明白为什么“没有消息循环COM不能工作”。这似乎仅适用于Windows应用程序项目。有人可以详细说明一下,以及如何正确使用SetEventSink(ISensorEvent)
来继续接收常规控制台应用程序的数据吗?
我已经确认其他代码(例如,用于初始化/解码数据的代码)通过使用同步方法-GetData()
。