【发布时间】:2017-05-03 19:55:28
【问题描述】:
我希望使用媒体播放器给出一些声音指示。计算机试图说:
"在文本框中输入您的姓名缩写,然后按 Enter"
发生四件事中的一件
1) 事件 MediaPlayer.OnMediaPlayerFailed
2) 事件 MediaPlayer.OnMediaPlayerEnded
3) 用户完成任务并在 MediaPlayer 仍在播放时按 Enter
4)用户什么都不做,我们希望超时
MediaPlayer.Play() 在开始播放录音之前将控制权返回到下一条指令。 UI 线程必须等待。但是怎么做?我决定使用 Task.Run / Task.Factory.Run / Task.Factory.RunStart 开始一个新任务。然后在 UI 线程上等待(timeout_interval)。但我只是把同样的问题交给了新的线程/任务。 MediaPlayer.Play() 实际上是新任务的最后一行,并在声音结束之前完成。在执行 OnMediaXxxx 之前,我需要保持任务处于活动状态。然后这两个事件将完成任务或取消 UI.Wait() 我一直在用 CancellationTokens、CancellationTokenSources 和无数不同的等待方式兜圈子。
解决办法是什么?我正在尝试做的似乎不起作用
【问题讨论】:
-
我相信有多种方法可以做到这一点。其中之一是您可以先禁用文本框,然后在媒体完全播放后启用它,方法是等待线程 5 秒后MediaPlayer 开始播放声音。
标签: uwp media-player wait cancellationtokensource cancellation-token