我正在 Windows 基础应用程序上使用 .NET MAUI 应用程序,我在其中实现了用于通知的 Toast。但是,我遇到了一个问题,即单击 toast 消息(或 Snackbar)会打开应用程序的新实例,即使应用程序已经在运行。这种行为具有破坏性,我更希望单击通知只是将现有应用程序窗口带到前台,而不是启动重复的实例。
环境:
平台:Windows
框架:.NET MAUI
CommunityToolkit.Maui-版本:[7.0.1]
如果有人遇到此问题或知道如何确保单击 .NET MAUI Toast 或 Snackbar 不会创建新实例,我将非常感谢任何指导或解决方法建议。
我更希望单击通知即可将现有应用程序窗口带到前台,而不是启动重复的实例。
以下是参考代码:
using CommunityToolkit.Maui.Alerts;
private async void OnCounterClicked(object sender, EventArgs e)
{
await Toast.Make("Toast is here", ToastDuration.Short).Show();
}
是的,确实如你所说。
但是你可以尝试一下解决方案。请将以下代码添加到文件中 适用于您毛伊岛应用程序的
App.xaml.cs
Windows
平台:
public App()
{
var singleInstance = AppInstance.FindOrRegisterForKey("SingleInstanceApp");
if (!singleInstance.IsCurrent)
{
// this is another instance
// 1. activate the first instance
var currentInstance = AppInstance.GetCurrent();
var args = currentInstance.GetActivatedEventArgs();
singleInstance.RedirectActivationToAsync(args).GetAwaiter().GetResult();
// 2. close this instance
Process.GetCurrentProcess().Kill();
return;
}
// this is the first instance
// 1. register for future activation
singleInstance.Activated += OnAppInstanceActivated;
// 2. continue with normal startup
this.InitializeComponent();
}
private void OnAppInstanceActivated(object? sender, AppActivationArguments e)
{
// handle the old app being loaded
}