Permitir apenas uma instância do programa em C#

Olá leitor,

Abaixo coloco um pequeno projeto que impede duas instâncias do mesmo programa em C# serem abertas no mesmo computador. Caso o usuário tente abrir, a seguinte MessageBox será mostrada e a segunda instância será fechada.


O código é baseado no post "Verificar se processo está rodando com C#" e possui apenas um pequeno trecho adicional no método Main() da classe Program.cs que faz este trabalho. Ficou assim:

static void Main()
{
    //Pega o nome do processo deste programa
    string nomeProcesso = Process.GetCurrentProcess().ProcessName;

    //Busca os processos com este nome que estão em execução
    Process[] processos = Process.GetProcessesByName(nomeProcesso);

    //Se já houver um aberto
    if (processos.Length > 1)
    {
        //Mostra mensagem de erro e finaliza
        MessageBox.Show("Não é possível abrir duas instâncias deste programa.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
        Application.Exit();
    }
    //Caso contrário continue normalmente
    else
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
}

Lembrando que para usar a classe Process você deve importar o System.Diagnostics no início do código.

O .exe compilado para o .NET Framework 4.0 do programa pode ser baixado no seguinte link:  http://goo.gl/f93Qw
O projeto e código fonte completo do programa em C# criado com o VisualStudio2010 está em: http://goo.gl/myldp

Até a próxima!

6 comentários:

  1. conheci seu blog a alguns dias ... estudo c# a uns 3 meses curto muito a linguagem em si... e seu blog tem me ajudado muitas em duvidas ... espero que não pare com as postagens é de grande proveito vlw...

    ResponderExcluir
    Respostas
    1. Muito obrigado. Que bom que estou ajudando seu início nos estudos. Boa sorte na sua jornada!

      Excluir
  2. Blog realmente demais!! dicas perfeitas!!

    ResponderExcluir
  3. Muito bom cara! Ajudou bastante, continue com o bom trabalho! vlws!

    ResponderExcluir
  4. Show de bola 100% funcional!!! E bem fácil de entender. Parabéns e muito obrigado.

    ResponderExcluir

Não esqueça de enviar um comentário. Isto motiva o autor a continuar postando e também é uma forma de agradecimento