Ich entwickle eine Windows Forms-Anwendung, um wenige Operationen auf einem über USB verbundenen Gerät auszuführen. Für alle Operationen wie Lesen, Schreiben und andere Dinge haben wir eine benutzerdefinierte Bibliothek.Stoppt einen bei einem blockierenden Aufruf festsitzenden Thread
Der Schreibvorgang ist abgeschlossen, wenn der Benutzer eine Taste drückt.
Zum Lesen wird ein separater Thread erstellt. Problem mit der verfügbaren Bibliothek ist, dass der Leseaufruf blockiert ist und INFINITE Timeout aufweist.
Bei einem Verbindungsfehler bleibt dieser Thread beim Lesefunktionsaufruf hängen, da diese Funktion nur bricht, wenn Daten empfangen werden.
Was könnte der Weg sein, diesen Thread in einem solchen Szenario zu töten? Thread.Abort() funktioniert nicht.
Ich verwende C# für diese Programmierung.
Wenn die „benutzerdefinierte Bibliothek“ * bietet keine beliebige * bedeutet eine Sperrung auf einem ausgefallenen Verbindung lesen abzubrechen, sollten Sie es weg und verwenden Sie etwas anderes werfen, ehrlich. – Clemens
Ich weiß .... Ich wünschte, ich könnte ... Aber Same ist der Fall mit der Standard-Serial-Port-Klasse von C# ... Lesevorgang wird auf fehlgeschlagene Verbindung fest, wenn ich Timeout zu Infinte festlegen. – Swanand
Sie könnten versuchen, den "Griff" zu schließen, was auch immer Sie versuchen zu lesen ... dann wird das Lesen abgebrochen Ich sollte raten ... und Ihr Thread, je nachdem, wie es geschrieben ist, kann beendet werden. –