Das mit den Sleeps kommt auf die Lesefunktion an. Du erwaehnst das du ein von der
DLL exportierte Read-Funktion verwendest (zumindest implizierst du es).
Das duerfte ein blockierendes Read sein, d. h. der Aufruf kommt erst zurueck wenn Daten angekommen sind (und hoffentlich auch wenn das Geraet ausgesteckt wird).
Damit hast du natuerlich ein Problem den Thread wieder zu beenden, denn er haengt ja in der Read-Funktion fest.
In meiner HID-Komponente ist das mit ReadFileEx und SleepEx geloest.
ReadFileEx kommt gleich zurueck und dann wird mit SleepEx gewartet bis bis der asynchrone ReadFileEx-Aufruf Daten liefert.
SleepEx bewirkt das der Thread regelmaessig aufwacht und damit beendbar ist.