SpeechRecognitionEngine::UnloadGrammar Method (Grammar^)
.NET Framework (current version)
Unloads a specified Grammar object from the SpeechRecognitionEngine instance.
Assembly: System.Speech (in System.Speech.dll)
Parameters
- grammar
-
Type:
System.Speech.Recognition::Grammar^
The grammar object to unload.
| Exception | Condition |
|---|---|
| ArgumentNullException | Grammar is null. |
| InvalidOperationException | The grammar is not loaded in this recognizer, or this recognizer is currently loading the grammar asynchronously. |
If the recognizer is running, applications must use RequestRecognizerUpdate to pause the SpeechRecognitionEngine instance before loading, unloading, enabling, or disabling a Grammar object. To unload all Grammar objects, use the UnloadAllGrammars method.
The following example shows part of a console application that demonstrates the synchronous loading and unloading of speech recognition grammars.
Loading grammars... Loaded grammars: - Grammar1 - Grammar2 - Grammar3 Unloading Grammar1... Loaded grammars: - Grammar2 - Grammar3 Unloading all grammars... No grammars loaded. Press any key to exit...
using System; using System.Collections.Generic; using System.Globalization; using System.Speech.Recognition; namespace UnloadGrammars { class Program { static void Main(string[] args) { using (SpeechRecognitionEngine recognizer = new SpeechRecognitionEngine(new CultureInfo("en-US"))) { Console.WriteLine("Loading grammars..."); // Create and load a number of grammars. Grammar grammar1 = new Grammar(new GrammarBuilder("first grammar")); grammar1.Name = "Grammar1"; recognizer.LoadGrammar(grammar1); Grammar grammar2 = new Grammar(new GrammarBuilder("second grammar")); grammar2.Name = "Grammar2"; recognizer.LoadGrammar(grammar2); Grammar grammar3 = new Grammar(new GrammarBuilder("third grammar")); grammar3.Name = "Grammar3"; recognizer.LoadGrammar(grammar3); // List the recognizer's loaded grammars. ListGrammars(recognizer); // Unload one grammar and list the loaded grammars. Console.WriteLine("Unloading Grammar1..."); recognizer.UnloadGrammar(grammar1); ListGrammars(recognizer); // Unload all grammars and list the loaded grammars. Console.WriteLine("Unloading all grammars..."); recognizer.UnloadAllGrammars(); ListGrammars(recognizer); } Console.WriteLine("Press any key to exit..."); Console.ReadKey(); } private static void ListGrammars(SpeechRecognitionEngine recognizer) { // Make a copy of the recognizer's grammar collection. List<Grammar> loadedGrammars = new List<Grammar>(recognizer.Grammars); if (loadedGrammars.Count > 0) { Console.WriteLine("Loaded grammars:"); foreach (Grammar g in recognizer.Grammars) { Console.WriteLine(" - {0}", g.Name); } } else { Console.WriteLine("No grammars loaded."); } Console.WriteLine(); } } }
.NET Framework
Available since 3.0
Available since 3.0
Show: