1

这是来自 C# Windows 窗体的代码

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

尝试实现暂停和停止功能时出现问题。当代码读取某些内容时,任何按钮或菜单项都不会被点击

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

我尝试了合成器...异步...但是按钮的单击事件没有被执行

4

2 回答 2

4

请改用 SpeakAsync() 方法。这可以防止 UI 阻塞 Speak() 方法,它在被阻塞时无法响应按钮单击。您可以使用 SpeakAsyncCancelAll() 来阻止它继续喋喋不休。

于 2010-02-17T18:19:01.720 回答
3

你需要audio.Speak(textBox1.Text);使用线程管理这个块

        Thread t = new Thread(() =>
        {
            SpeechSynthesizer audio = new SpeechSynthesizer(); 
            audio.Speak(textBox1.Text);
        });
        t.Start();

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

于 2010-02-17T18:06:29.583 回答