为什么在sp_session_process_events()中使用nextTimeout ?



我正在用c#编写一个Spotify应用程序。

我目前正在验证sp_session_process_events()调用是否正常工作。试图是非常科学的,我一直在使用out参数nextTimeout来尝试和防止需要库调用NotifyMainThreadCallback。

使用该功能时,呼叫似乎和不使用该功能时一样频繁。nextTimeout的值似乎也不是每次都有效。下面是一个简短的例子,当我只调用sp_session_process_events时需要bý NotifyMainThreadCallback。

00:00:08.299: - NotifyMainThreadCallback
00:00:08.312: sp_session_process_events() next process requested in 1000 ms
00:00:08.376: - NotifyMainThreadCallback
00:00:08.381: - NotifyMainThreadCallback
00:00:08.389: sp_session_process_events() next process requested in 922 ms
00:00:08.396: - UserinfoUpdatedCallback
00:00:08.401: - NotifyMainThreadCallback
00:00:08.409: sp_session_process_events() next process requested in 15 ms
00:00:08.415: - MetadataUpdatedCallback
00:00:08.419: sp_session_process_events() next process requested in 891 ms

为什么要使用nextTimeout呢?

next_timeout值的存在是为了防止您过于频繁地调用sp_session_process_events,而不一定是为了减少主线程'唤醒'的数量。我没有看到你看到的超时值有任何异常。

notify_main_thread回调经常从sp_session_process_events调用,无论如何你应该从主线程调用。这不会给你带来大问题。我认为您可以添加一些额外的逻辑来留在事件循环中,而不是在这些情况下发出信号,但这可能需要比您已经拥有的更多的同步。

相关内容

  • 没有找到相关文章

最新更新