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.