SAPI (Sprachprogramm) Programm hängt

  • VB.NET
  • .NET (FX) 4.0

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von mrMo.

    SAPI (Sprachprogramm) Programm hängt

    Moin Zusammen. Jedesmal wenn Sapi einen Text vorliest hängt sich das programm jedesmal kurzzeitig auf. Ist der Text Vorgelesen funktioniert wieder alles.
    Kann man das Irgendwie beheben?
    Evt mit einem Backgroundworker?!

    VB.NET-Quellcode

    1. Option Strict On
    2. Public Class Form1
    3. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    4. Control.CheckForIllegalCrossThreadCalls = False
    5. End Sub
    6. Private Sub Test()
    7. For i As Integer = i To 3
    8. Me.Text = (i).ToString
    9. Threading.Thread.Sleep(1000)
    10. Next
    11. End Sub
    12. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    13. Dim thread As New System.Threading.Thread(AddressOf Test)
    14. thread.Start()
    15. End Sub
    16. End Class

    Visual Basic.NET 8o
    MS-SQL
    8o
    @xX-Nick-Xx: Backgroundworker = Uraltzeug
    @Cheffboss: Control.CheckForIllegalCrossThreadCalls = False: no, nonononono. never! Bitte Finger weg von solchen workarounds/hacks, die einem im Leben noch richtig schön zwischen die Beine treten können. Und werden.

    Wenn mit .Net-Framework > 4.0 gearbeitet wird: Forensuche nach Async/Await.
    Sonst über nen eigenen Task (Forensuche entsprechend).
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    xX-Nick-Xx schrieb:

    Jedes mal wenn Sapi einen Text vorliest hängt sich das programm jedesmal kurzzeitig auf. Ist der Text Vorgelesen funktioniert wieder alles.

    Wenn ein Programm sich "Aufhängt", also kurzfristig nicht auf Klicks und dergleichen reagiert, ist das kein "aufhängen" sondern der Code der ausgeführt wird dauert länger als der User es erwarten würde. Dein Programm nimmt erst dann wieder "Befehle" entgegen, wenn der Code bis zum Ende ausgeführt wurde. Das ist also kein "aufhängen", sondern das Programm berechnet noch was bzw. führt noch etwas aus.

    Dem kann Abhilfe geschaffen werden, indem der Code Asynchron oder in einem separaten Thread ausgeführt wird.

    Daher hat @Chefboss auch den Sleep in einem Thread gestartet. Und indirekt das Multithreading als Lösung vorgeschlagen.

    Multithreading, also das parallele Ausführen von "Aktionen", ist ein sehr komplexes Thema. Hierzu stehen z.B. die Klassen Thread und Task zur Verfügung.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen