使用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