심각한 멀티 스레드 디버깅 문제가 있습니다. 직렬 장치와 상호 작용할 때 어떤 타이밍 문제가 있습니다.이를 추적해야합니다. 나는 세 개의 스레드가 있습니다 :C# 및 vs2008의 스레드 된 디버그
- UI 업데이트를위한 주요 스레드. 사용자는 사전 설정을 선택하여 장치의 한 매개 변수를 변경하거나 한 번에 여러 매개 변수를 변경할 수 있습니다.
- 장치가 여전히 연결되어 있는지 확인하기 위해 쿼리하는 상태 검사 스레드입니다. 사용자가 장치를 종료하거나 장치 자체가 흥미로운 방식으로 상호 작용할 경우 상태 변경 사항이 UI에 반영되어야합니다.
- 장치가 응답하는 직렬 포트를 읽는 스레드입니다.
제 문제는 실제로이 상황을 디버깅하는 것과 관련이 있습니다. 디버깅 할 때마다 각 스레드에서 하나의 줄마다 중단 점이 있어야하는 것처럼 보입니다. 하나의 스레드에서 중단되면 디버거는 해당 스레드를 단계별로 실행하지 않습니다. 다른 스레드가 계속해서 업데이트되지만, 디버거에서 정상적으로 실행되는 스레드가 없어야합니다. 즉 한 줄에서 다음 줄로 이동해야합니까? 그런 다음 'threads'탭을 사용하여 스레드간에 전환 할 수 있습니다.
내가 WPF에있는 이유는 그것이 상황을 전혀 바꾸지 못하기 때문이다. 어쩌면 그렇지 않을 수도 있습니다. 상태 검사 스레드는 UI가 작동하는 동안 만 상태를 확인해야하기 때문에 UI 컨트롤의 일부입니다. 이 컨트롤은 주 응용 프로그램과 별개의 라이브러리에 있습니다.
WPF 참조가 제거 된 이유는 실제로 WPF와 관련이 없기 때문입니다. 일반적인 MT 디버깅입니다. –
불행히도 vs2008이 프로젝트가 WPF로 마이그레이션 된 이후로 매우 극적으로 행동하기 시작했습니다 (이는 단지 하나의 문제 동작이고 다른 것은 소스 제어 및 다른 빌드 설정과 관련이 있습니다). 따라서 경우에 따라서 포함. – mmr