2014-01-25 2 views
0

Windows CE 장치 용 .NET Compact Framework 응용 프로그램을 작성하고 있습니다. 내 응용 프로그램은 XML 직렬화 된 데이터 패킷을 사용하여 데스크탑 컴퓨터와 통신합니다.C# Compact Framework 감지 연결이 닫힙니다.

내가 겪고있는 것은 네트워크 케이블이 분리되면 내 stream.Read 조작이 무기한 차단된다는 것입니다. 내 CF에서는 시간 초과 설정이 지원되지 않습니다.

이 문제를 해결하는 방법에 대한 "모범 사례"답변을 찾고 있습니다. 어떤 이유로 든 연결이 닫히면 루프가 멈추고 다시 연결을 시도해야합니다.

나는 this answer을 찾았지만 필요한 "using"지시어는 포함되어 있지 않으며 어쨌든 어떤 일이 벌어지고 있는지 확신 할 수 없습니다.

모든 문제는 특히 문제가 해결되면 높이 평가됩니다. 감사!

+0

어떤 종류의 코드 샘플도 포함시키지 않았습니다 ... 어떤 스트림 클래스를 사용하고 있습니까? Socket 클래스로 직접 작업하는 것이 더 좋다. – tcarvin

답변

0

stream.Read는 블로킹 호출이므로 모든 블로킹 함수에서 권장하는 코드를 별도의 스레드로 옮겨야합니다.

그런 다음 linked code을 사용하여 스레드를 중지 할 수 있습니다. 예를 들어, Thread.Join을 먼저 사용하고 Thread.Abort()를 사용합니다. try/catch 블록 내의 스레드 안에 코드를 넣고 ThreadAbortException을 catch하여 스레드가 중단 된시기를 알 수 있습니다.

스레드 코드를 작성하기 시작할 때 나머지 코드와 동기화하는 방법을 찾아야합니다. 이것은 대개 대리자 및 이벤트 처리기를 사용하여 수행됩니다. 그러나 이것은 이전과 다른 작업이고 가치있는 연구입니다.