Jak zabić wątek zawieszony przez ReadFile

0

Witam

W jaki sposób zabić wątek utworzony poprzez BeginThread, który realizuje odbiór z portu szeregowego poprzez funkcję ReadFile.

Dokładnie, to chodzi mi o zabicie wątku w sytuacji, gdy urządzenie transmitujące przez RS-232 do kompa nie nadaje (lub np. odłączono kabel RS-232), bo wtedy funkcja ReadFile "wisi", a wątku nie da się zabić nawet przez TerminateThread. Windows po kilkukrotnym kliknięciu na krzyżyk zamknięcia zamyka, a kompilator zamyka program od razu.

Być może można jakoś zatrzymać funkcję ReadFile, ale nie wiem jak.

Z wszelkie rady z góry dzięki.

0

CloseHandle(hCom) wywołane z innego wątku przerwie ReadFile.

0

Nie działa, bo ReadFile nie ma wtedy żadnych przerw - cały czas "wisi" czekając na odbiór jakiegoś znaku.

0

Znalazłem rozwiązanie - być może przyda się komuś w przyszłości.

Poczytałem dokładniej o RedFile i znalazłem funkcję CancelIo, która pozwala zakończyć operację trwającego odczytu z danego pliku (czy portu). Potem tylko TerminateThread i CloseHandle i mamy posprzątane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1