No dotnet core, como posso garantir que apenas uma cópia do meu aplicativo esteja em execução?

No passado, eu fiz algo assim

private static bool AlreadyRunning()
{
    var processes = Process.GetProcesses();
    var currentProc = Process.GetCurrentProcess();
    logger.Info($"Current proccess: {currentProc.ProcessName}");
    foreach (var process in processes)
    {
        if (currentProc.ProcessName == process.ProcessName && currentProc.Id != process.Id)
        {
            logger.Info($"Another instance of this process is already running: {process.Id}");
            return true;
        }
    }
    return false;
}

O que funcionou bem. No novo mundo principal da dotnet, tudo tem um nome de processodotnet então eu só posso rodar umdotnet aplicativo de cada vez! Não é bem o que eu quero: D

Existe uma maneira ideal de fazer isso no dotnet? Vejo o mutex sugerido, mas não tenho certeza de que compreendo as possíveis desvantagens ou estados de erro em execução em outros sistemas que não uma máquina Windows.

questionAnswers(2)

yourAnswerToTheQuestion