C#WinForm没有响应 - System.Speech - 帮助

时间:2010-02-17 18:01:18

标签: c# speechsynthesizer

以下是C#Windows窗体

中的代码
SpeechSynthesizer audio = new SpeechSynthesizer(); 
audio.Speak(textBox1.Text);
  • 这将读取文本框中的任何内容

尝试实施暂停和停止功能时出现问题。当代码读取内容时,任何按钮或menuitem都没有被点击

public void button1_Click(object sender, EventArgs e)
    {
        //Nothing gets executed here when the code is reading
    }

我刚看到有SpeakProgressEventArgs http://msdn.microsoft.com/en-us/library/system.speech.synthesis.speakprogresseventargs%28VS.85%29.aspx

我尝试了synth ... asyncancel ... 但是按钮的点击事件没有被执行

2 个答案:

答案 0 :(得分:4)

请改用SpeakAsync()方法。这可以防止UI在Speak()方法上阻塞,它在阻止时无法响应按钮点击。您可以使用SpeakAsyncCancelAll()来阻止它进行模糊处理。

答案 1 :(得分:3)

您需要使用Threads

管理此阻止audio.Speak(textBox1.Text);
        Thread t = new Thread(() =>
        {
            SpeechSynthesizer audio = new SpeechSynthesizer(); 
            audio.Speak(textBox1.Text);
        });
        t.Start();

现在如何停止正在运行的线程?在这张海报中很好地解释了