2011-03-18 5 views
4

WinForm으로 시작했지만 현재는 UI가있는 WPF 창을 사용하는 응용 프로그램을 만들고 있습니다. 상호 작용은 모두 아름답게 작동하지만 WPF 창을 처음 표시 할 때는 표시하는 데 오랜 시간이 걸립니다 (약 1-3 초). 앱이 추락했는지 (콘텐츠가 표시 될 때까지) 오랫동안 궁금해합니다. 같은 창을 두 번째로 호출 할 때 빠르게 발생합니다. 나는 그들에게 처음으로 빨리 올 필요가있다.WPF는 WinForm 응용 프로그램에서 사전 컴파일 된 리소스입니까?

리소스 폴더에 XAML로있는 스타일과 컨트롤 템플릿을 사용하고 있습니다. WPF 용 XAML 창에서 Windows 리소스 사전에 병합합니다. 이러한 작업 (VS 2010)의 빌드 작업을 "리소스"로 설정해야합니다. 가급적 쉽게 유지 보수를 위해 별도의 파일에 보관하고 싶습니다. 빌드 동작이 "페이지"인 경우 XAML이 미리 컴파일되어 더 빨리로드되어야하지만 페이지로 설정하면 리소스 사전에 병합 할 수 없습니다. 그 주위에 방법이 있습니까?

저는 WPF의이 부분에서 상당히 새롭고 지금까지 인터넷 검색이 성공적이지 않았습니다.

명확해야 : WinForms에 포함 된 WPF 컨트롤에 대해 말하는 것이 아닙니다. WinForm 컨텍스트에서 생성 된 완전히 별도의 WPF 창에 대해 이야기하고 있습니다.

전체 앱 또는 적어도 모든 XAML (모두 정적이며 동적 XAML 없음)을 사전 컴파일하는 방법이 있습니까?

미리 감사드립니다.

편집 : UI는 무겁지 않습니다. 해당 버튼에는 5 ~ 20 개의 버튼과 일반 컨테이너 (기본적으로 1 또는 2 개의 스택 패널이있는 그리드)가 있습니다.


업데이트 : - WPF 창 부하에 영향을 나는 "NGEN이 APPNAME를 설치하지"와 프리 컴파일을 시도했다.

모든 리소스와 템플릿을 window.xaml에 포함 시켰습니다. 효과가 없습니다.

http://www.codeproject.com/KB/dotnet/pre_JIT.aspx

(나는 'ittay 오빌'에 의해 제안 된 개선을 사용) :

내가 여기 응용 프로그램의 부하에 따라 사전 jitting에 대한이 정말 흥미로운 기사를 발견 (window.xaml은 사전 컴파일입니다)
    다시
  • : WPF 창 부하에 영향 ...

부하 시간은 단지 첫 번째로드에 변경되지 않습니다하지만 크게 모든 연속에 감소 부하 (20ms 이하의 부하).

도대체 무슨 일이 벌어지고있는거야?

답변

0

XamlReader.LoadAsync을 사용하여 XAML을 비동기 적으로로드하는 방법 방법은?

+0

그래, 나는 그것에 대해 생각했지만, 성가신 것처럼 보이기 때문에 지금까지 그것에 대해 생각하지 않았다. 내가 그럴만 한 가치가 있다는 것을 안다면 나는 그것을 할 것이다. 당신 (또는 다른 사람)이 그 접근법을 시도하고 눈에 띄는 성능 향상을 얻었습니까? – Harald

+0

xaml이 비동기 적으로로드 될 때까지로드 대화 상자를 표시하여 걸려있는 것처럼 보이지 않습니다. –

관련 문제