Tworzę aplikację Windows Forms, aby wykonać kilka operacji na urządzeniu podłączonym przez USB. W przypadku wszystkich operacji, takich jak czytanie, pisanie i inne rzeczy, mamy niestandardową bibliotekę.Zatrzymaj wątek zablokowany na wywołanie blokowania
Operacja zapisu jest wykonywana, gdy użytkownik kliknie przycisk.
Aby odczytać, tworzony jest oddzielny wątek. Problem z dostępną biblioteką polega na tym, że rozmowa Read jest blokowana i ma limit czasu INFINITE.
W przypadku błędu połączenia, ten wątek zatrzymuje się na wywołaniu funkcji Read, ponieważ ta funkcja ulega uszkodzeniu tylko wtedy, gdy otrzyma dane.
Co może być sposobem na zabicie tego wątku w takim scenariuszu? Thread.Abort() nie działa.
Używam C# do tego programowania.
Jeśli „zwyczaj biblioteka” nie przewiduje * każdy * oznacza anulować blokowanie odczytu na nieudanym związku, należy go wyrzucić i użyć czegoś innego, szczerze. – Clemens
Wiem .... Chciałbym móc ... Ale tak samo jest z domyślną klasą portu szeregowego C# ... Operacja odczytu zostanie zatrzymana na nieudanym połączeniu, jeśli ustawię Timeout na Infinte. – Swanand
Możesz spróbować zamknąć "uchwyt" do tego, co próbujesz odczytać z ... następnie odczyt zostanie anulowany Powinienem się domyślić ... i twoja nić w zależności od tego, jak to jest napisane może wyjść. –