2

我正在开发一个 Windows 8.1 应用程序,用户可以使用它玩井字游戏。为了使我的应用程序实时,我利用了 SignalR。这是我为向用户发送游戏请求而编写的代码。

hubProxy.On<string>("ShowRequest", async (requestOwner) =>
        {
            await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async () =>
            {
                var messageDialog = new MessageDialog(requestOwner + " wants to play with you", "New Game Request");
                messageDialog.Commands.Add(new UICommand("Accept", new UICommandInvokedHandler(CommandHandler)));
                messageDialog.Commands.Add(new UICommand("Deny", new UICommandInvokedHandler(CommandHandler)));

                messageDialog.DefaultCommandIndex = 1;
                messageDialog.CancelCommandIndex = 2;

                await messageDialog.ShowAsync();

            });

        });

当一个用户向另一个用户发送请求时,一个消息对话框会出现在请求发送到的用户屏幕上。如果该用户点击接受按钮,则会显示应用程序的另一个页面。在此页面上,用户玩游戏并再次显示获胜者并带有消息对话框(可能导致错误,我不知道)。到目前为止,一切都很好。但是,如果他们返回上一页并发送另一个请求,则不会显示消息对话框,并且在下面的行中会抛出 UnauthorizedAccessException。

await messageDialog.ShowAsync();

以下是异常详情:

消息:“访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))”

来源:“Windows.UI”

StackTrace:“在 Windows.UI.Popups.MessageDialog.ShowAsync()\r\n 在 XOX.AvailableUsersPage.<>c__DisplayClass7.<<.ctor>b__2>d__b.MoveNext()”

我在 stackoverflow 和其他网站上查看了类似的问题,但它们对我没有帮助。

谢谢

编辑:我真的无法诊断异常的原因。我将这些代码行放在一个 try-catch 块中,并且没有抛出异常!当我从用户玩游戏的页面中删除消息对话框(宣布获胜者的消息)时,再次没有例外。

4

0 回答 0