Закройте последовательный COM порт безопасно в C#
main() { thread_B.start(); thread_A.start(); } public void Thread_A() { while(true) if (State == 1) { try { Thread_B.Interrupt(); if (!thr.Join(5000)) { Thread_B.Abort(); GC.Collect(); Thread_B.ExecutionContext.Dispose(); // State = 0; // From here i want to end thread safely // Application must not restart } Console.WriteLine("\nInsert_Dongle"); } catch (Exception e) { } } } Thread Thread_B= new Thread(delegate() { State = TLoop(); }); public static int TLoop() { while(true) // some error found return 1;// }
я открываю последовательный порт в потоке _B
если кто то удаляет последовательный кабель во время выполнения кода входящие данные останавливаются но последовательный порт все еще открыт если я пытаюсь закрыть последовательный порт он дает
- необработанная система исключений.ObjectDisposedException произошло в mscorlib.dll дополнительная информация : безопасная ручка была закрыта"
как закрыть компорт?
Sergey Alexandrovich Kryukov
Крайне плохая резьба, бессмысленное использование GC, но хороший вопрос.
--СА