/ / Use o mutext para detectar e chamar o processo iniciado - c #, mutex

Use o mutext para detectar e chamar o processo iniciado - c #, mutex

Como posso usar o mutex para encontrar o primeiro processo pelo GUID e chamar a função nele? Como no navegador da web, quando você tenta iniciá-lo pela segunda vez, basta abrir uma nova janela.

// appGuid is const string containing app GUID
using (Mutex mutex = new Mutex(false, "Global\" + appGuid))
{
if (!mutex.WaitOne(0, false))
{
// CODE TO FIND AND CALL FIRST PROCESS AND THEN EXIT
Environment.Exit(0);
}
else
{
App app = new App();
app.InitializeComponent();
app.Run();
}
}

Respostas:

1 para resposta № 1

Eu acho que existem várias maneiras de lidar com o "oh, você abriu uma segunda instância, mas nós permitimos apenas uma, então vamos proxy sua solicitação para a primeira instância"problema.

  • Você pode fazer com que o processo host esteja ouvindo umsoquete e quando o mutex detectar que já foi aberto, ligue para o soquete de escuta. Talvez use algo tão simples quanto o .NET remoting, não há necessidade real de usar o WCF completo aqui ou a gravação de soquete em bruto
  • Você também pode ter um buffer de memória compartilhada e gravar usando a memória compartilhada. Mas isso exigirá sincronização entre os dois processos, para que possa ser meio confuso
  • Você pode apenas acionar um arquivo e fazer com que o processo host esteja escutando eventos de arquivo em um local conhecido. Esta é provavelmente a solução mais fácil e de baixa tecnologia

Essas são 3 idéias, provavelmente há mais

Mas, se você deseja apenas obter informações do processo, por que não procurar o processo nome?