C# ohLibspotify登录后不调用任何回调

C# ohLibspotify登录后不调用任何回调,c#,libspotify,C#,Libspotify,我正在尝试创建一个项目,在该项目中,我使用ohLibspotify.Net Libspottify包装器登录到spotify并流式播放列表 就我所见,我已经按照示例中相同的方式设置了所有内容。首先创建一个会话,如下所示: SpotifySessionConfig sp_config = new SpotifySessionConfig() { ApiVersion = 12, CacheLocation = "cache",

我正在尝试创建一个项目,在该项目中,我使用ohLibspotify.Net Libspottify包装器登录到spotify并流式播放列表

就我所见,我已经按照示例中相同的方式设置了所有内容。首先创建一个会话,如下所示:

SpotifySessionConfig sp_config = new SpotifySessionConfig()
        {
            ApiVersion = 12,
            CacheLocation = "cache",
            SettingsLocation = "settings",
            UserAgent = "player",
            ApplicationKey = Properties.Resources.appkey,
            Listener = new sp_Listener()
        };
sp_session = SpotifySession.Create(sp_config);
然后调用
relogin()
,如果失败,则向用户显示登录窗口,因为找不到存储的凭据。当用户向我提供了他的帐户详细信息时,我会调用
登录(用户名、密码、true、null)
。之后,我正在等待对
sp\u监听器的回调

sp_侦听器中
类中,我已覆盖以下函数:

SpotifySessionListener.LoggedIn(SpotifySession session, SpotifyError error)
SpotifySessionListener.ConnectionError(SpotifySession session, SpotifyError error)
SpotifySessionListener.LogMessage(SpotifySession session, string data)
唯一被调用的回调是
LogMessage
回调。我已经将它连接到log4net,以便高效地读取所有输出。这是所有的
LogMessage
输出:

2015-02-22 20:58:38,636 [18] DEBUG Namespace.sp_Listener - 19:58:38.634 I [c:/Users/spotify-buildagent/BuildAgent/work/1e0ce8a77adfb2dc/client/core/session/offline_authorizer.cpp:297] Unable to login offline: no such user

2015-02-22 20:58:38,649 [18] DEBUG Namespace.sp_Listener - 19:58:38.649 I [c:/Users/spotify-buildagent/BuildAgent/work/1e0ce8a77adfb2dc/client/core/session/offline_authorizer.cpp:297] Unable to login offline: no such user

2015-02-22 20:58:38,651 [14] DEBUG Namespace.sp_Listener - 19:58:38.649 E [c:/Users/spotify-buildagent/BuildAgent/work/1e0ce8a77adfb2dc/client/core/network/proxy_resolver_win32.cpp:215] WinHttpGetProxyForUrl failed

2015-02-22 20:58:38,664 [19] DEBUG Namespace.sp_Listener - 19:58:38.661 I [ap:1752] Connecting to AP ap.gslb.spotify.com:4070

2015-02-22 20:58:38,713 [19] DEBUG Namespace.sp_Listener - 19:58:38.713 I [ap:1226] Connected to AP: 193.182.7.34:4070

看来我一定忘了什么。我不知道是什么,也许你们当中有人知道一个解决方案。

我是ohLibSpotify包装器库的原始作者。我认为您可能忽略了调用ProcessEvents的必要性。ohLibSpotify尽可能只在libspotify上提供一层薄薄的内容。在使用OLIbSpStVIST时,LISSPDIST文档中的几乎所有内容都是相关的,并且您应该将这些文档视为您的第一个调用端口。p> 特别是:

库本身在内部使用多个线程。要允许在这些线程之间进行同步,必须实现sp_session_回调::notify_main_线程回调。无论何时(从某些内部线程)调用,应用程序都必须唤醒主循环,以便可以运行sp_session_process_events()函数

API本身不是线程安全的。因此,必须注意不要从多个线程调用API函数

名称略有不同,但概念相同-您需要实现NotifyMainThread以获取libspotify想要与您通信的通知,然后需要确保主线程调用sp_session.ProcessEvents。您还需要确保一次只有一个线程与ohLibSpotify交互,或者通过协调使只有一个线程调用ohLibSpotify,或者在调用ohLibSpotify时使用适当的锁

(我在这里使用的是libspotify名称:无论您使用的是libspotify目录还是ohLibSpotify,以下建议同样适用。)


除了少数例外,libspotify只在调用sp_session_process_事件时从内部调用回调。(例外情况是notify_main_线程和与音乐传送相关的回调。)因此,如果您没有设置为定期调用该线程,您会发现libspotify没有太多功能。如果您的程序有一个事件循环,则应安排在收到notify_main_线程回调时或上次调用sp_session_process_events指定的时间已过时向自己发送事件,并在事件处理程序中调用sp_session_process_events。如果没有事件循环,可能需要为此生成一个线程,并确保使用适当的锁来阻止其他线程同时调用libspotify。

我是ohLibSpotify包装库的原始作者。我认为您可能忽略了调用ProcessEvents的必要性。ohLibSpotify尽可能只在libspotify上提供一层薄薄的内容。在使用OLIbSpStVIST时,LISSPDIST文档中的几乎所有内容都是相关的,并且您应该将这些文档视为您的第一个调用端口。p> 特别是:

库本身在内部使用多个线程。要允许在这些线程之间进行同步,必须实现sp_session_回调::notify_main_线程回调。无论何时(从某些内部线程)调用,应用程序都必须唤醒主循环,以便可以运行sp_session_process_events()函数

API本身不是线程安全的。因此,必须注意不要从多个线程调用API函数

名称略有不同,但概念相同-您需要实现NotifyMainThread以获取libspotify想要与您通信的通知,然后需要确保主线程调用sp_session.ProcessEvents。您还需要确保一次只有一个线程与ohLibSpotify交互,或者通过协调使只有一个线程调用ohLibSpotify,或者在调用ohLibSpotify时使用适当的锁

(我在这里使用的是libspotify名称:无论您使用的是libspotify目录还是ohLibSpotify,以下建议同样适用。)


除了少数例外,libspotify只在调用sp_session_process_事件时从内部调用回调。(例外情况是notify_main_线程和与音乐传送相关的回调。)因此,如果您没有设置为定期调用该线程,您会发现libspotify没有太多功能。如果您的程序有一个事件循环,则应安排在收到notify_main_线程回调时或上次调用sp_session_process_events指定的时间已过时向自己发送事件,并在事件处理程序中调用sp_session_process_events。如果没有事件循环,可能需要为此生成一个线程,并确保使用适当的锁来阻止其他线程同时调用libspotify。

我是ohLibSpotify包装库的原始作者。我认为您可能忽略了调用ProcessEvents的必要性。ohLibSpotify尽可能只在libspotify上提供一层薄薄的内容。在使用OLIbSpStVIST时,LISSPDIST文档中的几乎所有内容都是相关的,并且您应该将这些文档视为您的第一个调用端口。p> 特别是:

库本身在内部使用多个线程。允许同步