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があることを読んだところです。

私はsynth...asyncancelを試しました...しかし、ボタンのクリックイベントは実行されません

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 に答える