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.