引用.net中的System.speech包,但是在程序运行时报错。

C# Winform项目中,利用Windows类库,引用.net中的System.speech语音控制包。
在程序运行执行到"SRE.SetInputToDefaultAudioDevice();"报错,提示“值不在预期的范围内。”。
但是将工程中Program.cs文件的Main()方法上面的[STAThread] 这个关键字去掉,程序正常运行。但是将[STAThread]去掉会导致本工程中其它窗体的运行出现异常,有部分功能不能正常运行。

请问各位,在Program.cs文件的Main()方法上面的[STAThread] 这个关键字在不去掉的情况下,能够让程序正常的运行,不报运行的错误。

语音代码如下:
private SpeechRecognitionEngine SRE = new SpeechRecognitionEngine();

private void Form1_Load(object sender, EventArgs e)
{
SRE.SetInputToDefaultAudioDevice(); //在Program.cs文件的Main()方法上面的[STAThread] 这个关键字不去掉的情况下,执行到这报"值不在预期的范围内。"这个错误;
GrammarBuilder GB = new GrammarBuilder();
GB.Append("选择");
GB.Append(new Choices(new string[] { "红色", "绿色" }));
Grammar G = new Grammar(GB);
G.SpeechRecognized += new EventHandler(G_SpeechRecognized);
SRE.LoadGrammar(G);
SRE.RecognizeAsync(RecognizeMode.Multiple);

    }

void G_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
//Text = e.Result.Text;
switch (e.Result.Text)
{
case "选择红色":
BackColor = Color.Red;
break;
case "选择绿色":
BackColor = Color.Green;
break;
}
}

查看全部
sxl_88
sxl_88
2015/07/07 02:22
  • winform
  • 点赞
  • 收藏
  • 回答
    私信
满意答案
查看全部

1个回复