📄 OutGridTree.Window/App.axaml.cs
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;

namespace OutGridTree.Window;

internal sealed partial class App : Application
{
    private readonly RpcService rpcService = new();

    public override void Initialize()
    {
        AvaloniaXamlLoader.Load(this);
    }

    public override void OnFrameworkInitializationCompleted()
    {
        if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
        {
            if (desktop.Args is [var pipeName])
            {
                desktop.MainWindow = new MainWindow(rpcService);
                desktop.ShutdownRequested += OnShutdownRequested;

                rpcService.Start(pipeName);
            }
        }

        base.OnFrameworkInitializationCompleted();
    }

    private void OnShutdownRequested(object? sender, ShutdownRequestedEventArgs e)
    {
        rpcService.Stop();
    }
}