Зачем использовать nextTimeout в sp_session_process_events()?
Я пишу приложение Spotify в C#.
В настоящее время я проверяю, что вызов sp_session_process_events() работает правильно. Пытаясь быть очень научным, я использовал параметр out nextTimeout, чтобы попытаться предотвратить необходимость вызова библиотекой NotifyMainThreadCallback в lib.
Вызов, кажется, так же часто с этой функцией, как и без нее. Значение 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? Насколько я вижу, это можно игнорировать.
1 ответ
next_timeout
значение там, чтобы помешать вам звонить sp_session_process_events
слишком часто и не обязательно предназначен для уменьшения количества "пробуждений" основного потока. Я не вижу ничего необычного в значениях тайм-аута, которые вы видите.
notify_main_thread
обратный вызов часто вызывается из sp_session_process_events
, который вы все равно должны вызывать из основного потока. Это не должно вызывать у вас огромных проблем. Я полагаю, вы могли бы добавить некоторую дополнительную логику, чтобы оставаться в цикле событий, а не сигнализировать в этих случаях, но это может потребовать больше синхронизации, чем вы уже сделали.