This question already has answers here:
MessageDialog ShowAsync throws accessdenied exception on second dialog
                                
                                    (5个答案)
                                
                        
                                6年前关闭。
            
                    
我认为我不需要粘贴代码。这是C#。

基本上,我创建了一个MessageDialog,显示了它,并从一个按钮调用了UICommandInvokedHandler。

在该处理程序内,我执行其他可能导致调用另一个MessageDialog.ShowAsync的项。但是,第二个调用给出了Unthorized Access Exception。

我已经尝试过一些事情,例如引发事件,以试图在UI THread上强制创建新的MessageDialog,但是这样做是相同的。

关于如何解决这个问题的任何建议?粗略地讲,我试图在对话框中说“您确定吗?是/否”。如果是,它会执行部分内容并且可以弹出其他对话框以提供随机错误信息。

确定代码:

    public static async void WriteMessageDialog(string message, string buttonText1, UICommandInvokedHandler handler1, string buttonText2, UICommandInvokedHandler handler2)
    {
        MessageDialog msgDlg = new MessageDialog(message);
        msgDlg.Commands.Add(new UICommand(buttonText1, handler1));
        msgDlg.Commands.Add(new UICommand(buttonText2, handler2));

        // Set the default button to be enabled and default on escape key pressed
        msgDlg.DefaultCommandIndex = 0;
        msgDlg.CancelCommandIndex = 0;

        // Show the window
        await msgDlg.ShowAsync();
    }


后来.....

// THey original Message Dialog
RTUtilities.WriteMessageDialog(
       _resourceLoader.GetString("DetelePersonConfirm"),
       _resourceLoader.GetString("Delete"),
       new UICommandInvokedHandler(this.CommandDeletePersonHandler), _resourceLoader.GetString("Cancel"),
       new UICommandInvokedHandler(this.CommandCancelHandler));


叫这个.....

    private async void CommandDeletePersonHandler(IUICommand command)
    {
        MessageDialog msgDlg = new MessageDialog(_resourceLoader.GetString("DeleteIndividualError"));
        await msgDlg.ShowAsync();
    }

最佳答案

好吧,问题的核心是您试图在仍在播放消息对话框的同时打开它。

可能有更优雅的方法,但是您可以使用ShowAsync的返回来标识所选命令,然后显式调用其处理程序,这样,第一个弹出窗口在第二个弹出窗口出现之前就被消除了。为此快速测试表明该方法可行。

关于c# - WinRT C#MessageDialog.ShowAsync-未经授权的访问异常-,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15915269/

10-12 06:33