Windows programının sadece tek bir kopyasını çalıştırma

Windows programının sadece bir kopyasının çalışmasını, başka bir kopyasının çalışmamasını, eğer program çalışıyorsa uyarı vermesini istiyorsanız yapmanız gerekenler...

Bu iş için Mutex sınıfından faydalanabiliriz.

Projenizi oluşturduğunuzu ve Form1 adında bir form eklediğinizi düşünürsek, Program.cs dosyanızın Main metodunu şu şekilde güncellemelisiniz:

[STAThread]
private static void Main()
{
    const string unique = "buraya bir şey yazınız...";

    using (Mutex mtex = new Mutex(true, unique, out bool instanceCountOne))
    {
        if (instanceCountOne)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());

            mtex.ReleaseMutex();
        }
        else
        {
            MessageBox.Show("Uygulamanın bir kopyası zaten çalışıyor...");
        }
    }
}

Mutex sınıfı System.Threading namespace i içerisinde yer aldığından 

using System.Threading;

eklemeyi unutmayın.

Programı CTRL+F5 ile çalıştırdığınızda (veya build ettikten sonra exe sini çalıştırdığınızda) form çalışacaktır;

mutex-programin-tek-kopyasi-1

Programı bir kez daha çalıştırdığınızda;

mutex-programin-tek-kopyasi-2

şeklinde bir uyarı ile karşılaşırsınız.