Я изучаю обработку событий C #, написав приложение, которое использует iTunes COM API. У меня есть метод, который должен запускаться, когда iTunes прекращает воспроизведение песни, но метод никогда не вызывается, когда я запускаю событие в приложении, нажимая кнопку «Стоп / Пауза».
РЕДАКТИРОВАТЬ : На основании ответа dboarman я удалил цикл while. Теперь событие обрабатывается, но только если я перезагружаю iTunes перед запуском PlayPlaylist (). Если я запускаю 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).
Spec: мое приложение должно воспроизводить песни в списке воспроизведения рекомендаций Genius от первого до последнего (iTunes по умолчанию не воспроизводит рекомендации Genius последовательно). StopEvent должен запустить следующую песню в списке для воспроизведения.