이 문제와 관련없는 모든 항목을 수행하는 작은 디스플레이 장치와 인터페이스하는 C#으로 프로그램을 작성하고 있습니다.응답을 기다리는 스레드가 죽는 중
문제는 다음과 같습니다. 사용자가 장치에 대한 일부 설정을 저장하려고 시도하는 단추를 선택하면 확인 프로토콜을 사용하여 설정이 (의미 - It 설정을 전송 한 다음 장치로부터 확인 응답 패킷을 기다립니다.) 시도 할 스레드의 "상위"스레드가 될 주 응용 프로그램에서 스레드를 생성합니다. 장치에 저장하십시오. 현재 다음과 같은 방식으로 작동합니다.
스레드 생성 -> 저장하려고합니다. 초과하면
, Thread.Interrupt 통해 인터럽트 스레드 1 (장치 데이터의 잠금을 해제)() < -----는이 문제이다. 이것은 작동하지 않습니다. 장치를 끄거나 플러그를 뽑을 때까지 잠금 장치를 굵게 표시합니다. (그러면 새로운 스레드가 생성되지만, 지금은 발생하지만 첫 번째 스레드가 여전히 데이터를 잠그고 있기 때문에 결코 작동하지 않습니다.)
스레드가 시간 초과되지 않은 경우 스레드 1에 대한 콜백을 통해 부모 스레드는 더 이상 스레드를 생성하지 못하게됩니다.
마지막으로 성공한 스레드가 없으면 전체 시도가 실패합니다.
는 I는 또한 디바이스로부터의 응답을 기다릴 때 그 장치까지 완전히 멈추는 동일한 동작을 나타내는 생성 종료되는 단지 단일 스레드로 이렇게 시도
는 전원이 꺼 지거나 분리되는
대기 호출을 절대로 남기지 않으므로 스레드를 중지하도록 설정할 수있는 부울을 사용하여 장치가 ack를 보내길 기다리는 캡슐화 방법이 없습니다. 임베디드 소프트웨어이므로 기다리는 기능을 수정할 수 없습니다. 임베디드 소프트웨어에 대한 C# 인터페이스 만 수정할 수 있습니다.
사용중인 .NET Framework 버전은 무엇입니까? –
.NET 4.0을 사용 중입니다. –
마지막 지점에 대해서는 명확하지 않습니다. 함수가 ACK를 기다리기 위해 호출되었지만 그 함수가 존재하며 임베디드 시스템이 아닌 호스트에서 실행되기 때문에 왜 수정 될 수 없습니까? 차라리 폐쇄 소스 드라이버입니까? 또한 ACK가 수신되지 않은 이유를 궁금해해야합니다. – Clifford