나는 그 센서를 질의하는데 사용하는 하드웨어 센서를위한 폐쇄 형 소스 API를 가지고있다. API는 C# interop을 통해 사용하는 DLL로 제공됩니다. API 함수가 차단 중입니다. 대개 오류 값을 반환하지만 어떤 경우에는 오류 값을 반환하지 않습니다.함수 호출을 막기위한 watch dog
이 상황을 감지하고이 경우 차단 된 스레드를 제거 할 수 있어야합니다. 어떻게 C#에서이 작업을 수행 할 수 있습니까?
호출되는 스레드는 BackgroundWorker를 통해 만들어집니다. 내가 함수를 호출하기 전에 설정할 수있는 함수 호출을 차단하기위한 간단한 감시견을 찾고 있는데 내가 돌아 왔을 때 다시 설정합니다. 그냥 앉아서 돌아올 때까지 기다려야합니다. 그렇지 않으면 스레드가 죽을 것입니다. 1) API가 다시 해제되고 응용 프로그램의 스레드가 여전히 응답하지 않고 인 경우을 반환해야합니다. 2) 다른 복구 조치를 취할 수 있습니다. API를 다시 초기화하여 계속 작업 할 수 있습니다.
좋은 답변입니다. 함께 사는 고양이와 개 외에, 당신이 실을 죽일 때 기억이 누출 될 것입니다. 나는 죽을 수있는 별도의 과정을 가지고 있다는 당신의 제안을 좋아합니다. 그런 식으로 정리하는 것이 더 자동적입니다. –
+1 : 동의합니다. 별도의 프로세스가 가장 좋은 방법입니다. 그것은 끔찍하지만 인생은 때로는 그렇습니다. –
별도의 프로세스 아이디어가 실제로 좋습니다. 또한 관리되지 않는 DLL의 32 비트 버전 만 있기 때문에 x86 용 전체 관리 응용 프로그램을 구축하지 않아도됩니다. (다른 아이디어가 여전히 나오는지 여부를 단지 확인하는 것입니다.) – ygoe