我正在通过编写一个使用 iTunes COM API 的应用程序来学习 C# 事件处理。我有一个在 iTunes 停止播放歌曲时应该运行的方法,但是当我通过点击“停止/暂停”按钮触发应用程序中的事件时,该方法永远不会被调用。
编辑:根据 dboarman 的回复,我删除了 while 循环。现在该事件确实得到了处理,但前提是我在运行 PlayPlaylist() 之前重新启动了 iTunes。如果我第二次运行 PlayPlaylist(),则停止事件不再被触发/处理。
void trayIcon_Click(object sender, EventArgs e)
{
PlayPlaylist();
}
public static void PlayPlaylist()
{
itapp = new iTunesApp();
itapp.OnPlayerStopEvent +=
new _IiTunesEvents_OnPlayerStopEventEventHandler(itapp_OnPlayerStopEvent);
lastPlaylist = itapp.LibraryPlaylist;
itapp.Play();
}
static void itapp_OnPlayerStopEvent(object iTrack)
{
Debug.WriteLine("Stop Event fired");
//...
}
在此处更新了 Pastebin 中的源代码(第 59-68 行是相关的)。
规格:我的应用程序应该从头到尾播放 Genius 推荐播放列表中的歌曲(iTunes 默认情况下不会连续播放 Genius 推荐)。StopEvent 应该触发列表中的下一首歌曲播放。