Я изучаю обработку событий на C#, создавая приложение, использующее API-интерфейс iTunes COM. У меня есть метод, который должен запускаться, когда iTunes перестает воспроизводить песню, но метод никогда не вызывается, когда я запускаю событие в приложении, нажав кнопку «Стоп/Пауза».Событие C# не обрабатывается
EDIT: Основываясь на ответе 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 here (строки 59-68 являются значимыми из них).
Spec: Мое приложение должно воспроизводить песни в плейлисте рекомендаций Genius от первого до последнего (iTunes по умолчанию не воспроизводит рекомендации Genius последовательно). StopEvent должен запускать следующую песню в списке для воспроизведения.
У меня есть следующее: http://ideone.com/UA2D90 Это сокращенный случай. У меня есть мой itunesapp, завернутый синглом, чтобы уменьшить сложность моего приложения. Когда я запускаю приложение, запускаются события воспроизведения/остановки, когда я закрываю приложение с помощью метода закрытия, а затем вручную снова выбираю exe/f5, события не работают ... –