2011-08-31 5 views
2

Windows CE 컴퓨터 용 C# 응용 프로그램을 작성하고 있습니다. CE 기기가 시리얼 장치와 통신 중이며 SerialPort 클래스를 사용하고 있습니다.디버거에서 Windows CE를 실행하면 결국 메모리 부족 오류가 발생합니다.

Visual Studio에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 배포하면 15 분에서 20 분 동안 정상적으로 실행되어 메모리가 부족한 상태에서 충돌이 발생하지만 결국 솔루션을 배포하고 로컬로 실행할 때 CE 기계에서 (폴더로 이동, exe를 열어), 그것은 그것을 시도한만큼 하루 종일 잘 실행됩니다.

이유를 모르겠습니다. 내가 릴리스 및 디버깅을위한 건물을 시도하고 아무런 차이가 없습니다. 그것이 보이는 곳에서 유일한 것으로 보인다. 또한 dotTrace를 사용하여 응용 프로그램의 프로파일 링을 시도했지만 프로파일 링이 시작되기 전에 CE 시스템에 배포되고있는 것 같습니다. 어쨌든 프로파일 러가 실행되는 동안 버그를 재현 할 수 없습니다.

또한 직렬 스트림을 처리하는 코드를 DLL로 패키징 해보았는데, 디버깅하는 동안 Visual Studio에서 내부적으로 무언가가 망가져 있다고 생각했지만 아무 것도 변경되지 않았습니다.

IDE에서 실행 안정성을 높이기 위해 할 수있는 일이 있습니까? 나는 그것으로 디버깅 할 수있는 것을 좋아하지 만, 불일치는 내가 뭔가 잘못하고있는 것처럼 느낀다.

+0

우리가 결론을 내린 결론은 .Net 3.5의 SerialPort 클래스를 둘러싼 문제 중 일부라는 것입니다. 이것을 C++ 라이브러리로 대체하면 문제가 해결 된 것 같습니다. –

답변

1

우리가 말할 수있는 한 지금까지 설명한 문제는 System.IO.Ports의 SerialPort 클래스와 관련이 있습니다. 나는 그것이 문제의 일부와 관련이있을 것이라고 생각한다. here; 관리되는 SerialPort 클래스는 루프 내부에서 관리되지 않는 WinAPI 코드를 호출합니다. 문제가 발생하고 관리되지 않는 메모리가 손실됩니다.

관련 문제