2012-10-02 83 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

你真的應該讓MessageBox函數異步和「等待前「裏面的RunAsync調用。這在架構上更乾淨,並允許您捕獲調用RunAsync期間發生的任何錯誤。 –

+0

爲什麼你會顯示兩個消息框?也許他們不想要你這樣做。您想做什麼? –

+1

此方法是用於顯示消息框的通用方法,可能會調用兩次。 – msbg

回答

6

而不是試圖找到一種方法來關閉它,試試這個 爲AsyncCommand聲明一個實例變量;

AsyncCommand command; 

command = md.ShowAsync(); 

然後在commandhandler,運行你的方法檢查,如果命令爲null

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

// 做的東西/ TRYAGAIN阻止

+0

在WinJS而不是C#中有這樣的解決方案嗎? – ariestav

+0

看看這裏的代碼片段。 http://msdn.microsoft.com/library/windows/apps/BR208674?cs-save-lang=1&cs-lang=javascript#code-snippet-1 – Syler

相關問題