【发布时间】:2014-02-25 23:02:48
【问题描述】:
我有一个 WP8 应用程序,它使用 SpeechRecognizer 的无 UI 版本。我使用以下代码:
string[] commands = { "Shoot" };
recognizer = new SpeechRecognizer();
await speechOutput.SpeakTextAsync("You can say Shoot.");
recognizer.Grammars.AddGrammarFromList("captureCommands", commands);
SpeechRecognitionResult result = await recognizer.RecognizeAsync();
if (result.Text == "Shoot")
cam.CaptureImage();
这会在语音和屏幕文本中提示用户他可以说“拍摄”来拍照。其他三个选项是:
- 点击屏幕进行拍摄
- 点击
ApplicationBar中的拍摄按钮 - 点击
ApplicationBar上的a按钮从照片库中进行选择
在所有三种情况下,我都想取消语音识别器任务。
我尝试删除await 并将IAsyncOperation<SpeechRecognitionResult> 转换为Task<SpeechRecognitionResult>,但由于我不创建任务并且该方法不采用取消令牌,所以我不知道如何取消它,即使是现在我有任务对象。
如果我不取消任务并离开页面,我会收到应用级异常。有没有办法可以显式取消任务或等待的操作?
【问题讨论】:
标签: c# windows-phone-8 async-await