This documentation is archived and is not being maintained.

SpeechRecognitionEngine.LoadGrammarCompleted Event

Raised when the SpeechRecognitionEngine finishes the asynchronous loading of a Grammar object.

Namespace:  System.Speech.Recognition
Assembly:  System.Speech (in System.Speech.dll)

public event EventHandler<LoadGrammarCompletedEventArgs> LoadGrammarCompleted

The recognizer's LoadGrammarAsync method initiates an asynchronous operation. The SpeechRecognitionEngine raises this event when it completes the operation. To get the Grammar object that the recognizer loaded, use the Grammar property of the associated LoadGrammarCompletedEventArgs. To get the current Grammar objects the recognizer has loaded, use the recognizer's Grammars property.

If the recognizer is running, applications must use RequestRecognizerUpdate() to pause the speech recognition engine before loading, unloading, enabling, or disabling a grammar.

When you create a LoadGrammarCompleted delegate, you identify the method that will handle the event. To associate the event with your event handler, add an instance of the delegate to the event. The event handler is called whenever the event occurs, unless you remove the delegate. For more information about event-handler delegates, see Events and Delegates.

The following example creates an in-process speech recognizer, and then creates two types of grammars for recognizing specific words and for accepting free dictation. The example constructs a Grammar object from each of the completed speech recognition grammars, then asynchronously loads the Grammar objects to the SpeechRecognitionEngine instance. Handlers for the recognizer's LoadGrammarCompleted and SpeechRecognized events write to the console the name of the Grammar object that was used to perform the recognition and the text of the recognition result, respectively.

using System;
using System.Speech.Recognition;

namespace SampleRecognition
  class Program
    private static SpeechRecognitionEngine recognizer;
    public static void Main(string[] args)

      // Initialize an in-process speech recognition engine and set its input.
      recognizer = new SpeechRecognitionEngine();

      // Add a handler for the LoadGrammarCompleted event.
      recognizer.LoadGrammarCompleted +=
        new EventHandler<LoadGrammarCompletedEventArgs>(recognizer_LoadGrammarCompleted);

      // Add a handler for the SpeechRecognized event.
      recognizer.SpeechRecognized +=
        new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);

      // Create the "yesno" grammar.
      Choices yesChoices = new Choices(new string[] { "yes", "yup", "yeah" });
      SemanticResultValue yesValue =
          new SemanticResultValue(yesChoices, (bool)true);
      Choices noChoices = new Choices(new string[] { "no", "nope", "neah" });
      SemanticResultValue noValue =
          new SemanticResultValue(noChoices, (bool)false);
      SemanticResultKey yesNoKey =
          new SemanticResultKey("yesno", new Choices(new GrammarBuilder[] { yesValue, noValue }));
      Grammar yesnoGrammar = new Grammar(yesNoKey);
      yesnoGrammar.Name = "yesNo";

      // Create the "done" grammar.
      Grammar doneGrammar =
        new Grammar(new Choices(new string[] { "done", "exit", "quit", "stop" }));
      doneGrammar.Name = "Done";

      // Create a dictation grammar.
      Grammar dictation = new DictationGrammar();
      dictation.Name = "Dictation";

      // Load grammars to the recognizer.

      // Start asynchronous, continuous recognition.

      // Keep the console window open.

    // Handle the LoadGrammarCompleted event. 
    static void recognizer_LoadGrammarCompleted(object sender, LoadGrammarCompletedEventArgs e)
      string grammarName = e.Grammar.Name;
      bool grammarLoaded = e.Grammar.Loaded;

      if (e.Error != null)
        Console.WriteLine("LoadGrammar for {0} failed with a {1}.",
        grammarName, e.Error.GetType().Name);

        // Add exception handling code here.

      Console.WriteLine("Grammar {0} {1} loaded.",
      grammarName, (grammarLoaded) ? "is" : "is not");

    // Handle the SpeechRecognized event.
    static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
      Console.WriteLine("Grammar({0}): {1}", e.Result.Grammar.Name, e.Result.Text);

      // Add event handler code here.

.NET Framework

Supported in: 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.