开发者

C# WinForm not Responsive - System.Speech - Help

Here's a code from the C# Windows Form

SpeechSynthesizer audio = ne开发者_开发知识库w SpeechSynthesizer(); 
audio.Speak(textBox1.Text);
  • This will read anything that is in the textbox

Problem in trying to implement the pause and stop feature.Any button or menuitem doesnt get clicked when the code reads something

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

i just read there is SpeakProgressEventArgs http://msdn.microsoft.com/en-us/library/system.speech.synthesis.speakprogresseventargs%28VS.85%29.aspx

i tried synth...asyncancel... but the click event of the button doesnt get executed


Use the SpeakAsync() method instead. That prevents the UI from blocking on the Speak() method, it cannot respond to button clicks while it is blocked. You can use SpeakAsyncCancelAll() to stop it from nattering on.


you need to manage this block audio.Speak(textBox1.Text); using Threads

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

Now how to stop a running thread ? very well explained in this poster

  • How to Stop a Thread at a given point.
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜