2012-10-02 6 views
5

내 WinRT 응용 프로그램에서 MessageDialog를 닫으려고합니다. 한 번에 두 개의 메시지 대화 상자를 표시하려고하면 UnauthorizedAccessException이 표시됩니다. 이를 피하기 위해 기존 메시지 대화 상자가 열려 있으면 닫으려고합니다. 이를 사용하여 대화 상자를 표시합니다.메시지 대화 상자를 프로그래밍 방식으로 닫는 방법

MessageDialog md = new MessageDialog(" "); 

    private void MessageBox(string s) 
    { 
     Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => 
     { 
      md.Content = s; 
      //CLOSE HERE 
      md.ShowAsync(); 
     } 
     ); 
    } 

어떻게 닫을 수 있습니까?

+1

당신은 정말 기다리고 있습니다 "메시지 박스 기능 비동기을해야하고 차단 TRYAGAIN/물건을 할 null의 경우 방법 검사를 실행하기 전에 "그 안에 RunAsync 호출. 이는 구조적으로보다 깔끔하고 RunAsync 호출 중에 발생하는 모든 오류를 잡을 수 있습니다. –

+0

왜 두 개의 메시지 상자가 표시됩니까? 어쩌면 그들은 당신이하고 싶지 않을지도 모릅니다. 뭐하고 싶어? –

+1

이 메서드는 메시지 상자를 표시하는 데 사용하는 일반적인 메서드이며 두 번 호출 될 수 있습니다. – msbg

답변

6

대신 닫는 방법을 찾으려고 시도하십시오. AsyncCommand에 대한 인스턴스 변수를 선언하십시오. 당신의 commandhandler에서 다음

AsyncCommand command; 

command = md.ShowAsync(); 

, 명령

if(command!=null) 
{ 
command.Cancel(); 
} 

// 이

+0

C#보다는 WinJS에서 이와 같은 솔루션이 있습니까? – ariestav

+0

여기에서 코드 스 니펫을 살펴보십시오. http://msdn.microsoft.com/library/windows/apps/BR208674?cs-save-lang=1&cs-lang=javascript#code-snippet-1 – Syler

관련 문제