Поделиться через


SpeechRecognitionEngine.UnloadGrammar(Grammar) Метод

Определение

Выгружает заданный объект Grammar из экземпляра SpeechRecognitionEngine.

public:
 void UnloadGrammar(System::Speech::Recognition::Grammar ^ grammar);
public void UnloadGrammar(System.Speech.Recognition.Grammar grammar);
member this.UnloadGrammar : System.Speech.Recognition.Grammar -> unit
Public Sub UnloadGrammar (grammar As Grammar)

Параметры

grammar
Grammar

Объект грамматики для выгрузки.

Исключения

Grammar имеет значение null.

Грамматика не загружена в этот распознаватель или этот распознаватель в данный момент загружает грамматику асинхронно.

Примеры

В следующем примере показана часть консольного приложения, демонстрирующая синхронную загрузку и выгрузку грамматик распознавания речи.

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();
    }
  }
}

Комментарии

Если распознаватель запущен, приложения должны использовать для RequestRecognizerUpdate приостановки экземпляра SpeechRecognitionEngine перед загрузкой, выгрузкой, включением или отключением Grammar объекта. Чтобы выгрузить все Grammar объекты, используйте UnloadAllGrammars метод .

Применяется к

См. также раздел