gpt4 book ai didi

c# - 取消语音识别器任务

转载 作者:太空宇宙 更新时间:2023-11-03 10:49:35 26 4
gpt4 key购买 nike

我有一个 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();

这会在语音和屏幕文本中提示用户说“拍摄”来拍照。其他三个选项是:

  1. 点击屏幕进行射击
  2. 点击 ApplicationBar 中的拍摄按钮
  3. 点击 ApplicationBar 上的 a 按钮从照片库中选择

在这三种情况下,我都想取消语音识别任务。我尝试删除 await并类型转换 IAsyncOperation<SpeechRecognitionResult>Task<SpeechRecognitionResult> ,但由于我没有创建任务并且该方法没有取消标记,所以我不知道如何取消它,即使现在我有任务对象。

如果我不取消任务并离开页面,我会收到应用程序级别的异常。有没有一种方法可以明确取消任务或等待的操作?

最佳答案

You can't cancel a non-cancelable async operation .如果该方法不采用取消标记,您基本上无法取消它。你可以做的是:

  1. 使用 WithCancellationWithTimeout 放弃操作.
  2. 处理 SpeechRecognizer(它是一个 IDisposable)并捕捉它的 ObjectDisposedException

这是我对类似但不相同问题的解决方案:Async network operations never finish

关于c# - 取消语音识别器任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22016692/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com