Multithreading in VB.Net
lima-city → Forum → Programmiersprachen → Basic
angeben
bug
button
code
fenster
klicken
komplette windows
leute
machen
modul
programm
region
schnelle antwort
sprachausgabe
start
starten
system
testen
text
vorlesen
-
Hi Leute,
Ich bastle grade an einem Programm das mir unteranderem aus einer Textbox was vorliest (so ähnlich wie der blablamaker falls ihr den kennt). Funktioniert auch super nur während das Programm \"liest\" hängt alles. Man kann keinen Button mehr drücken usw. Sowas dachte ich mir kann man ja leicht mit Multithrating lösen. Einfach die Sprachausgabe in nem eigenen threat starten. Aber komischerweise hängt dann immer noch alles. Ich hab das so gemacht dass man auf einen button klickt, dann startet der Threat der eigentlich nur \"voice.speak(was auch immer)\" macht. Aber trotzdem hängt alles, kann mir da jmd helfen? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
So wie du das darstellst - nein. Denn wenn du das in einen eigenen Thread ausgelagert hast, dürfte die GUI nicht hängen.
Also poste deinen Code, zumindest den Teil, der sich mit den Threads befasst, sonst haben wir doch kein Plan, was da schief geht... -
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim t As Thread t = New Thread(AddressOf Me.read) t.Start() End Sub Private Sub read() say(TextBox1.Text) End Sub \'Das hier ist dann in nem Modul #Region \"Declarations\" Public WithEvents vox As New SpVoice #End Region Public Function say(ByVal text As String) vox.Speak(text) Return 1 End Function
Das ist der eigentlich relevante teil des Codes, danke schonmal für die schnelle antwort ;)
-
Hallo!
Obwohl eigentlich alles falsch ist, sollte dein Code trotzdem soweit funktionieren.
Ich denke mal das nicht nur dein Fenster nicht mehr reagiert, sonder das komplette Windows nicht?
Wo hast du die Klasse "SpVoice" her?
Gruß
Silver -
Bevor du den Thread startest solltest du vlt. erst einmal angeben:
Dim t As Thread t = New Thread(AddressOf Me.read) t.IsBackground = True '<-- Dadurch läuft der Thread im Hintergrund t.Start()
-
Mach mal vor dem Starten des Programms den Taskmanager auf.
Dort siehst du dann die Systemauslastung deines Programms nach dem klicken deines Startbuttons.
Geht die Systemleistung auf 100%?
Vielleicht hat die Klasse "SpVoice" ja einen Bug?
Zum testen kannst du ja mal das Vorlesen auskommentieren und nur ein MEldung anzeigen. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage