Использование SAPI MSDN, как вы отменяете операцию синхронного распознавания речи или, по крайней мере, останавливаете ее немедленно?Cancel Синхронное распознавание речи
Установка ввода в 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- method-in-c-sharp-for-throwing-the-exception-on-a-given-thread) объясняет, почему вы не должны этого делать. Можете ли вы объяснить, почему параметр async не работает для вас, учитывая, что у него есть специальный метод отмены? –
@JamesThorpe Как мое приложение работает и настроено, операция Async будет стоить дорогостоящим с точки зрения производительности. – JackBarn
По своей природе вы не можете отменить синхронизацию. Есть ли версия функций Beginxxx, Endxxx, которые вы могли бы использовать? –