Thread eines SerialPort.Datareceive-Handler

  • VB.NET

    Thread eines SerialPort.Datareceive-Handler

    Hallo!

    Ich habe folgendes Problem:

    In meinem Programm gibt es eine serielle Schnittstelle (SerialPort) und an dieser kommen in festen Abständen Daten an. Da diese Abstände recht klein sind (~1 s) ist die Schnittstelle quasi dauerhaft aktiv.

    Ich benutzt zum holen der Daten das DataReceived-Handle des Serialports und rufe über eine Delegate die Funktion auf, die diese Daten verarbeitet (Oberfläche aktualisieren etc.), da das DataReceive-Handle ja in einem separaten Thread abläuft.

    Jetzt Das Problem: Wenn ich das Programm schließe, während dieser Thread läuft, stürzt das Programm ab. Wenn ich Glück habe, dann gibt es durch die SeriaPort.ReadExisting()-Methode eine System.IO.IOException, jedoch ist dies in den meisten Fällen nicht der Fall und das Programm friert einfach ein.

    Ich müsste im FormClosing-Handle des Hauptfensters auf den Thread warten. Normalerweise mit Thread.Join() kein Problem, aber: ich habe ja gar keine Thread-Instanz. Dei frag ist daher: wie komme ich an das Objekt des Threads, welcher die DataReceived-Methode ausführt?

    Vielen Dank schon im Vorraus

    P.S.: Die SerialPort.BreakState-Eigenschaft scheint nicht zu funktionieren. Das Programm stürzt rotzdem noch ab. Ich habe auch schon versucht, alle Aktionen in einen BackgroundWorker auszulagern und diesen dann zu beenden. Das funkioniert zwar, aber ist eigentlich nicht Sinn der Sache einen weiteren Thread zu starten der dann beendet werden kann.