1

重複の可能性:
SAPI または (テキスト読み上げ) の同期の問題 … C#

WebControl でブラウザを作成しました。次に、テキストを読んで強調表示したいと思います。そこで、文を分割してループを開始します。問題は、SAPI の同期呼び出しで文を読み上げると、ブラウザの他のすべてのボタンが機能しなくなることです。ソフトウェアを一時停止、再開、または終了することさえできません。すべてのボタンがハングアップします。

SAPI の非同期呼び出しを使用すると、この問題は発生しませんが、テキストの強調表示は機能しません。したがって、この同期呼び出しに固執する必要があり、このハングの問題も解決する必要があります。誰にも解決策はありますか!!!!!!!!

for (int i = 0; i < splitSentences.Length; i++)
{
    highlight(splitSentences[i]);

    sound_object.Speak(splitSentences[i]);
}

緊急の助けが必要です。文章を話しているときにブラウザの一時停止、終了ボタンをどのように解決できますか....

4

1 に答える 1

1

関数で Invoke を使用する必要があると思いますHighLight

例えば、

void Do() //Must be start in another thread, not in main
{
    string [] splitSentences = new [] {"bye", "hello"};

    for (int i = 0; i < splitSentences.Length; i++)
    {
        HighLight(splitSentences[i], this);
        sound_object.Speak(splitSentences[i]);
    }
}

void HighLight(string str, Control webBrowser)
{
    if (this.InvokeRequired)
    {
        this.Invoke(new Action<string>(s, c => HighLight(s, c)));
    }

    // Highlight code here
}
于 2011-04-01T04:19:44.167 に答える