WPF: Aplicativo de instância única

No Wpf não existe a opção (nas propriedades do aplicativo) para configurar o app como Single Instance (Instância única, ou seja, só será mantido um por vez em execução).

Mas isso não é difícil de implementar. Segue o código do arquivo App.xaml.cs:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.Windows;

namespace Meu_App
{
    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App : Application
    {

        protected override void OnStartup(StartupEventArgs e)
        {
            if (IsAppAlreadyRunning())
            {
                MessageBox.Show("O aplicativo já está em execução!", "Já está em execução", MessageBoxButton.OK, MessageBoxImage.Warning);
                Process.GetCurrentProcess().Kill();
            }
            base.OnStartup(e);
        }

        private static bool IsAppAlreadyRunning()
        {

            Process currentProcess = Process.GetCurrentProcess();

            if (Process.GetProcessesByName(currentProcess.ProcessName).Any(p => p.Id != currentProcess.Id && !p.HasExited))
            {
                return true;
            }

            return false;

        }

    }
}

Problema resolvido! Como mostrado, dessa forma é possível exibir uma MessageBox ao usuário informando que o aplicativo já se encontra em execução.

😀

Anúncios

Deixe um comentário :)

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s