Einzelnen Beitrag anzeigen

Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Async Serielle Übertragung - Thread hängt beim beenden

  Alt 14. Aug 2009, 16:26
Das ist eben das Problem an synchronem IO: Du kannst nicht auf äußere Signale reagieren. Ab Windows Vista könntest du vom Hauptthread aus mit MSDN-Library durchsuchenCancelIoEx den Thread zurückholen. Eleganter - und auch früher unterstützt - wäre es, auf asynchronen IO umzustellen, d.h. das File-Handle mit dem entsprechenden Flag zu öffnen und bei ReadFile dann eine Overlapped-Struktur zu verwenden. Mit WaitForMultipleObjects kannst du dann gleichzeitig auf das Overlapped-Ereignis und ein Stopp-Ereignis warten. In StopThread setzt du einfach das Stopp-Ereignis und der Thread kehrt praktisch sofort aus WaitForMultipleObjects zurück und beendet sich.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat