我正在用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呢?据我所知,它可以被忽略。
答案 0 :(得分:0)
next_timeout
值可以防止您过于频繁地调用sp_session_process_events
,并且不一定是为了减少主线程'唤醒'的数量。我没有看到你看到的超时值有什么异常。
notify_main_thread
回调通常是从sp_session_process_events
调用的,你应该从主线程调用它。这不应该给你带来很大的问题。我想你可以添加一些额外的逻辑来保留事件循环,而不是在那些情况下发出信号,但这可能需要比你已经拥有更多的同步。