Hallo an alle, ich arbeite an einem einfachen Programm dass die Sprachausgabe nutzt. Jetzt wollte ich das alles in ne Klasse schachteln. Gesagt getan so siehts aus und es funktioniert nicht. Was fehlt? Er sagt nichts.
Wenn ich quoue.Clear() weglasse spricht er allerdings perfekt, nur dass er dann alles was schonmal gesagt wurde wiederhohlt. Der Sinn der Klasse wäre übrigens zB Fehlermeldungen zu sprechen und wenn mal mehrere hintereinander anfallen diese in ne Warteschleife (quoue [Ja ich weis man schreib queue spielt aber jetzt mal keine rolle ] ) zu legen und hintereinander aufzusagen. Ich bin jetzt lange inaktiv gewesen in VB.net und vllt übersehe ich was (seit 3 tagen...) . Bin für jeden Rat dankbar, hoffe ihr könnt mir helfen, danke fürs lesen und schönes WE noch
Wenn ich quoue.Clear() weglasse spricht er allerdings perfekt, nur dass er dann alles was schonmal gesagt wurde wiederhohlt. Der Sinn der Klasse wäre übrigens zB Fehlermeldungen zu sprechen und wenn mal mehrere hintereinander anfallen diese in ne Warteschleife (quoue [Ja ich weis man schreib queue spielt aber jetzt mal keine rolle ] ) zu legen und hintereinander aufzusagen. Ich bin jetzt lange inaktiv gewesen in VB.net und vllt übersehe ich was (seit 3 tagen...) . Bin für jeden Rat dankbar, hoffe ihr könnt mir helfen, danke fürs lesen und schönes WE noch
Code:
Public Class voice Public WithEvents vox As New SpVoice Public RateOfSpeech As Integer = 0 Public quoue As New List(Of String) Public doneq As New List(Of String) Protected WithEvents bw As New BackgroundWorker Private Sub bw_DoWork(ByVal sender As Object, ByVal e As DoWorkEventArgs) Handles bw.DoWork Dim bw2 As BackgroundWorker = CType(sender, BackgroundWorker) Dim speaklist As List(Of String) = DirectCast(e.Argument, List(Of String)) Dim list2 As New List(Of String) list2 = speaklist For Each item In list2 vox.Speak(item, SpeechVoiceSpeakFlags.SVSFDefault) Next End Sub Public Sub load_up() Dim Token As ISpeechObjectToken Dim Voicelst As New List(Of ISpeechObjectToken) For Each Token In vox.GetVoices Voicelst.Add(Token) Next 'Dim str As String = Environment.UserName.ToString() vox.Voice = Voicelst(1) vox.Rate = RateOfSpeech End Sub Public Sub say(ByVal sentence As String) quoue.Add(sentence) If Not bw.IsBusy = True Then doneq.Clear() doneq = quoue bw.RunWorkerAsync(doneq) quoue.Clear() Else End If End Sub End Class
Comment