gpt4 book ai didi

c# - 如何在 WinRT 中同时允许多个弹出窗口?

转载 作者:行者123 更新时间:2023-11-30 18:51:02 27 4
gpt4 key购买 nike

如果在另一个 MessageDialog 对象已显示给用户但未被关闭(即,当另一个已经启动时显示一个弹出窗口),一个 UnauthorizedAccessException 被抛出。当您有多个线程试图同时提醒用户时,这会使事情变得困难。

我当前的(权宜之计)解决方案只是用 try/catch block 围绕 ShowAsync 调用并吞下异常。这不希望地导致用户错过后续通知。我能想到的唯一解决这个问题的方法是手动实现某种弹出队列。这似乎是一项过多的工作,但是,考虑到其他框架(如 Windows Phone)没有这个问题,并且只会在用户关闭时一个接一个地显示弹出窗口。

还有其他方法可以解决这个问题吗?

最佳答案

您可以使用此扩展方法轻松做到这一点:

public static class MessageDialogShower
{
private static SemaphoreSlim _semaphore;

static MessageDialogShower()
{
_semaphore = new SemaphoreSlim(1);
}

public static async Task<IUICommand> ShowDialogSafely(this MessageDialog dialog)
{
await _semaphore.WaitAsync();
var result = await dialog.ShowAsync();
_semaphore.Release();
return result;
}
}

关于c# - 如何在 WinRT 中同时允许多个弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14488587/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com