Я хочу дать звуковые инструкции с помощью медиаплеера. Компьютер пытается сказать:
"Введите свои инициалы в текстовое поле и нажмите Enter"
Происходит одно из четырех
1) Событие MediaPlayer.OnMediaPlayerFailed
2) Событие MediaPlayer.OnMediaPlayerEnded
3) Пользователь завершает задачу и нажимает клавишу ввода во время воспроизведения MediaPlayer
4) Пользователь ничего не делает, и мы хотим, чтобы тайм-аут
MediaPlayer.Play() возвращает управление следующей инструкции еще до начала воспроизведения записи. Поток пользовательского интерфейса должен ждать. Но как? Я решил, что буду запускать новую задачу с помощью Task.Run/Task.Factory.Run/Task.Factory.RunStart. А затем подождите (timeout_interval) в потоке пользовательского интерфейса. Но я только что передал ту же проблему в новый поток/задачу. MediaPlayer.Play() фактически является последней строкой новой задачи и завершается до окончания звука. Мне нужно поддерживать задачу до тех пор, пока не будет выполнен OnMediaXxxx. Затем два события завершат задачу или отменят UI.Wait(). Я ходил по кругу с CancellationTokens, CancellationTokenSources и множеством различных способов ожидания.
Какое решение? То, что я пытаюсь сделать, похоже, не работает