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

时间:2014-05-05 20:51:38

标签: spotify libspotify

我正在用C#编写Spotify应用程序。

我目前正在验证sp_session_process_events()调用是否正常工作。 试图对它非常科学,我一直在使用out参数nextTimeout来尝试阻止lib调用NotifyMainThreadCallback。

该功能似乎与该功能一样频繁,没有它。 nextTimeout的值似乎也不是每次都有效。下面是一个简短的例子,当我只在需要时调用sp_session_process_eventsbý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呢?据我所知,它可以被忽略。

1 个答案:

答案 0 :(得分:0)

next_timeout值可以防止您过于频繁地调用sp_session_process_events,并且不一定是为了减少主线程'唤醒'的数量。我没有看到你看到的超时值有什么异常。

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