2011-03-24 2 views
1

에 창 폐쇄를 지연 어떻게 App.xaml.ca에 가까운 창을 연기하려고합니다. 여기서 뭘 잘못하고 있니?는 WPF

+1

왜 당신은 응용 프로그램이 종료하기 전에 일시 정지 할 것인가? 이는 Windows에서 예상되는 동작과 반대되는 것으로, 이는 잘못된 디자인임을 의미합니다. 또한 사람들이 귀하의 프로그램이 뒤떨어져 있다고 생각하게합니다. 닫기 확인 대화 상자를 추가 할 생각이라면 Joel Spolsky의 UI 디자인 서적 : http://www.joelonsoftware.com/uibook/chapters/fog0000000062.html (끝 부분에 '많은 사람들이 컴퓨터로 위협 받다.) –

+0

오, 당신은 스스로를 닫는 스플래시 스크린을 구현하려고합니다 ... 질문을 편집하여 첫 번째 문장에서 그 사실을 더욱 분명하게 나타낼 수 있습니까? :) 그것은 당신이 무엇을 물어보고 있는지 훨씬 더 빨리 알아냅니다. 이 행을 따라 앱을 시작 화면 위에 표시하려고 할 수도 있습니다. 당신의 앱을 * 시작하는 것을 천천히하면 안된다. –

+0

나는 결국 그것을 편집 할 것이다. 하지만 창과 앱을 섞어서는 안됩니다. 나는 응용 프로그램이 아니라 창을 닫으려고합니다. 그러나 창을 닫을 때 앱이 너무 닫히고 싶지 않습니다. 원하지 않습니다. –

답변

1

타이머 콜백이 기본 발송자 스레드에서 다시 확인되는지 확인하십시오. 그렇지 않으면 다른 스레드에서 창을 닫으려고 할 때 예외가 발생할 가능성이 높습니다.

splash.Dispatcher.CheckAccess()을 사용하여 올바른 스레드에 있는지 확인한 다음 splash.Dispatcher.BeginInvoke((Action)() => splash.Close()을 사용하여 호출을 주 스레드로 보내십시오.

밖으로 this page 이상 확인

+0

Dispatcher가 완벽하게 작동했습니다. 감사. –

0

다른 종료 모드가 있습니다. 해당 창이 닫히고 마지막 모드 인 경우 응용 프로그램이 기본적으로 종료됩니다. 따라서 어느 정도 주변에 윈도우가 있는지 또는 ShutdownMode을 필요에 맞게 설정하여 시스템 종료 동작을 변경할 수 있습니다.

Application.Current.ShutdownMode = System.Windows.ShutdownMode.OnExplicitShutdown; 
+0

좋은 답변이지만, 그것을 그대로두고 변경하지 않는 것이 현명 할 것입니다. 메인 메뉴 창을 인스턴스화하고 표시하고 숨기기를 숨 깁니다. – Machinarius