Useful or not, from you.
Electron.NET RequestSingleInstanceLockAsync callback does not seem to work

<!-- Please search existing issues to avoid creating duplicates. -->

<!-- Which version of Electron.NET CLI and API are you using? --> <!-- Please always try to use latest version before report. -->

  • Version: 9.31.2

<!-- Which version of .NET Core and Node.js are you using (if applicable)? -->

<!-- What target are you building for? -->

  • Target: Windows 10

<!-- Enter your issue details below this comment. --> <!-- If you want, you can donate to increase issue priority (https://donorbox.org/electron-net) --> I cannot get the RequestSingleInstanceLockAsync callback to work at all. I have tried several things and it just does not seem to get called.

I have set up a test to see if its firing. Basically, if a second instance is launched, I just want it to kill the first instance. It does not kill the app. In my actual app, I want it to restore the window if necessary and focus the window; that wouldn't work either. It seems the callback just isn't being called at all.

The lock is working, it won't launch the second instance. (Although it does launch the splash screen which is not very nice).

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseExceptionHandler("/Error");
        // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
        app.UseHsts();
    }

    app.UseRequestLocalization(localizationOptions);

    app.UseHttpsRedirection();
    app.UseStaticFiles();

    app.UseRouting();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapBlazorHub();
        endpoints.MapFallbackToPage("/_Host");
    });

    if (HybridSupport.IsElectronActive)
    {
        var task = Electron.App.RequestSingleInstanceLockAsync(MyCallback);
        var hasLock = task.GetAwaiter().GetResult();
        if (!hasLock)
        {
            Electron.App.Exit();
            return;
        }
        // Normal browser window setup, etc.
    }
}

public void MyCallback(string[] args, string directory)
{
    Electron.App.Exit(); // !!! This is never executed.
}
        

Any idea what is going on here? Or am I using this incorrectly?

That's a useful answer
Without any help

Hi @matanelrb the support of handle command line arguments in singleInstance is implemented for the next Electron.NET 13.5.1 release.

see https://github.com/ElectronNET/Electron.NET/issues/520