문제

.NET Compact Framework 애플리케이션을 Windows CE 장치의 SD 카드로 이동할 때 프로그램은 느리게 실행 한 다음 내부 메모리에서 실행합니다.

스타트 업이 느려질 수 있다고 생각했지만 전체 프로그램입니다. 스토리지 카드에는 IO가 없습니다.

내 애플리케이션이 왜 그렇게 느리고, 컴팩트 프레임 워크가 어셈블리를 어떻게 처리하고로드 하는가?

도움이 되었습니까?

해결책

그것은 수요 약정과 관련이 있습니다. SD가 실행 가능한 미디어가 아니기 때문에 앱을 실행하기 위해 RAM으로 가져와야하므로 앱은 SD 카드에서 직접 실행할 수 없습니다. Windows CE에는 일반적으로 RAM이 많지 않으므로 로더는 전체 애플리케이션을 RAM으로 끌어 당기지 않습니다. 물론, 당신의 힙과 스택은 RAM으로 이루어 지지만 어셈블리 자체의 실제 IL 코드는 필요에 따라 페지됩니다. 또한 시스템이 더 이상 특정 페이지가 필요하지 않다고 결정하면 페지됩니다.

이 페이징은 성능에 영향을 줄 수 있지만 앱 자체가 실제로 크지 않으면 큰 영향을 미친다는 사실에 약간 놀랐습니다 (어셈블리에서 철수하는 내장 된 리소스가 많으면).

다른 팁

Ctacke의 이전 "수요 약정"답변에 동의합니다.

해결책 SD 카드에서 실제 실행 파일을 복사하고 카드에서 하드 디스크로 DLL을 복사 한 다음 로더에서 프로그램을 실행하는 것입니다. 후속 실행에서 로더는 하드 디스크 버전이 최신 상태인지 여부를 감지 할 수 있습니다. 그렇다면 직접 시작하십시오. 하드 디스크 버전이 최신 상태가되지 않으면 로더는 다시 카드에서 구제 파일을 복사 한 다음 실제 프로그램을 실행합니다.

원격 네트워크 위치에로드 된 프로그램에서 전에이 작업을 수행했으며 매우 잘 작동했습니다.

애플리케이션이 SD 카드에 있으면 일부 장치가 프로그램 충돌합니다. SUBNEND-POWER-ON 장치 중에 발생합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top