2016-06-07 6 views
1

시작 화면 중에 UWP 응용 프로그램이 시작될 때 MessageDialog의 결과를 기다려야합니다. 그래서, 나는 MainPage 생성자 내에서이 MessageDialog을 넣어 :페이지 생성자 nevers에서 MessageDialog를 기다리는 이유는 무엇입니까?

private async Task ParseConfiguration() 
{ 
    var dialog = new MessageDialog("Message", "Title"); 
    dialog.Commands.Add(new UICommand { Label = "Exit", Id = 0 }); 

    await dialog.ShowAsync(); 
} 


public MainPage() 
{ 
    ParseConfiguration(); // works, but I need to wait 
    ParseConfiguration().Wait(); // never exits this call 
} 

가 어떻게이 문제를 해결할 수 있습니까?

+0

대화 상자가 계속 표시되면 원하는 작업을 이동할 수 있습니다 : ParseConfiguration(). ContinueWith (t => {... do stuff stuff here ...}); – Evk

+1

이 게시물을 확인하십시오. http://blogs.msdn.com/b/pfxteam/archive/2011/01/13/10115163.aspx –

+0

@Evk 그래도 여전히 비동기 작업 결과를 기다려야합니다. – Nick

답변

1

해당 작업을 기다리면서 UI 스레드를 차단하므로 대화 상자 (분명히 UI 스레드가 표시되어야 함)를 표시 할 수없고 모든 것이 교착 상태가됩니다. 그러나 페이지 생성자는 어쨌든 이것을 수행하기에 좋은 장소가 아닙니다 (일반적으로 생성자). 대신 (예를 들어,이 유일한 장소가 아니다) 당신이 Application.OnLaunched이 작업을 수행 할 수 있습니다

protected override async void OnLaunched(LaunchActivatedEventArgs e) { 
    // some other code here 
    // parse configuration before main window is shown 
    await ParseConfiguration(); 
    // some more code here, including showing main windo 
} 

이 당신의 대화는 시작 화면 중에 표시됩니다하지만, (당신이 원하는대로) 전에 메인 페이지가 표시됩니다. 문제가 발생하면이 시점에서 전체 애플리케이션을 종료 할 수도 있습니다.