2016-11-08 26 views
1
Public Class Form1 
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim SAPI As Object 
    Select Case TextBox1.Text 
     Case "1" 
       PictureBox1.Image = My.Resources.picture1 
       RichTextBox1.Text = "Information here." 
       SAPI = CreateObject("SAPI.spvoice") 
       SAPI.speak(RichTextBox1.Text) 
    End Select 
    End Sub 
End Class 

2台のWindows 7マシンで、画像とテキストが最初に表示され、次にTTSが発生します。 2台のwin10マシンではスピーチが最初に行われ、次に絵とテキストが表示されます。テキストの音声部分(VB.NET)はWindows 7では正常に動作しますが、Windowsでは正常に動作しません。

私はtry catchとfinallyステートメントを追加して遅延を設定しようとしましたが、問題は解決しません。

私はこれを修正するために何かできますか?ブラックウッド

Public Class Form1 
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Dim SAPI As Object 
    Select Case TextBox1.Text 
     Case "1" 
       PictureBox1.Image = My.Resources.picture1 
       RichTextBox1.Text = "Information here." 
       System.Threading.Thread.Sleep(100) 
       SAPI = CreateObject("SAPI.spvoice") 
       SAPI.speak(RichTextBox1.Text) 
    End Select 
    End Sub 
End Class 
+0

質問を編集して**サウンドを遅らせようとする**のコードを表示することをお勧めします。 – Blackwood

+0

Windows 10は、音声APIを完全にオーバーホールしました。コルタナだから。 –

+0

@JoelCoehoorn私はそれがどんなオーバーホールとも関係ないと思います。 TTSが実行される前に画面が(まだ)更新されていないことだけです。別の(バックグラウンドの)スレッドで再生することをお勧めします。 – RobIII

答えて

1

ため

更新はたぶんちょうどSAPI = CreateObject呼び出しの前にそこにApplication.DoEventsを貼り付けてみてください。それはの解決策ではありませんが、実装するのが最も簡単です。続行する前に、ウィンドウが更新されます(が処理されます)。

作品場合は、真の解決策のために行く:background threadまたはasync/await(可能な限り)TTSの再生のために。

+0

ありがとう@ロビ! Application.DoEventを追加するとwin10ユーザーの問題が解決されたため、ここで説明した非同期/待機を調べます。 –

関連する問題