使用MSDN的SAPI,您如何取消同步语音识别操作,或者至少立即停止它?Canсel同步语音识别
将输入设置为null
会返回一个错误,指出识别器识别时我无法做到这一点,并且使用异步识别不是一种选择。
这里是低于
class MainClass {
static void Main() {
SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine();
recognizer.LoadGrammar(new DictationGrammar());
recognizer.SetInputToDefaultAudioDevice();
recognizer.Recognize();
}
void MethodCalledFromOtherThread() {
//Since SpeechRecognitionEngine.Recognize() stops the current thread,
//this method is called from a different thread.
//I NEED the current thread to stop.
//Here I want to Cancel recognizer.Recognize
}
}
您_might_能够得到原螺纹的保持和它抛出一个异常,而[这个问题](http://stackoverflow.com/questions/44656/is-there-a-good-用于抛出一个特定线程的异常的方法)涵盖了为什么你不应该那样做。你能解释为什么异步选项不适合你,因为它有一个特定的取消方法吗? – 2015-04-02 14:43:19
@JamesThorpe我的应用程序工作和设置的方式,异步操作将在性能方面代价高昂 – JackBarn 2015-04-02 14:51:56
由于它的本性,您无法取消同步呼叫。是否有可以使用的Beginxxx,Endxxx版本的功能? – 2015-04-02 15:11:55