MAUI Toaster 在 Windows 应用程序中单击时会创建应用程序的新实例

问题描述 投票:0回答:1

我正在 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();
}
xaml maui maui-community-toolkit maui-windows
1个回答
0
投票

是的,确实如你所说。

但是你可以尝试一下解决方案。请将以下代码添加到文件中 适用于您毛伊岛应用程序的

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
}
© www.soinside.com 2019 - 2024. All rights reserved.