En dotnet core, ¿cómo puedo asegurarme de que solo se esté ejecutando una copia de mi aplicación?

En el pasado he hecho algo como esto

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;
}

Lo que ha funcionado bien. En el nuevo mundo central de dotnet todo tiene un nombre de proceso dedotnet así que solo puedo ejecutar unodotnet aplicación a la vez! No es exactamente lo que quiero: D

¿Hay una manera ideal de hacer esto en dotnet? Veo mutex sugerido, pero no estoy seguro de entender los posibles inconvenientes o estados de error que se ejecutan en otros sistemas que no sean una máquina Windows.

Respuestas a la pregunta(2)

Su respuesta a la pregunta