Mutex ile bir programın birden fazla açılması kontrol altında tutulur. Mutex bekçi gibidir. Bir kaynağa ulaşmaya çalışan bir uygulama varsa Mutex giriş iznini ona verir, ikinciyi reddeder.Kısacası bir program için tek kanal kullanılır. İkinci bir kanala izin verilmez.
.NET Framework’te Mutex sınıfı, System.Threading kütüphanesi altında bulunmaktadır. Overload edilmiş bu sınıfın constructörü, en çok 3 parametreli haliyle kullanılır.
İlk parametre bool türünde olup bu mutexti sahiplenmek için kullanılır. İkinci parametrede, bu mutex’i tekilleştirmek için bir isim verilir. Üçüncü parametre, mutex’in başarılı ve başarısız sonucunu bildiren değeri tutmak için kullanılır.
Program.cs yi kendimize göre şu şekilde düzenliyoruz:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Threading;
namespace MUTEX
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
bool IlkOrnek;
//Bir mutex nesnesi oluturalm.
Mutex Mtx = new Mutex(true, "MyOrnekMutex", out IlkOrnek);
if (!IlkOrnek)
{
MessageBox.Show("Bu program, zaten Çalışıyor.");
return;
}
Application.Run(new Form1());
GC.KeepAlive(Mtx);//Nesneyi kaldralm.
}
}
}