Çözüm C#'ta programın 2 defa açılmasını engelleme

Bu konu bir çözümü açıklamaktadır. Herhangi bir çözüm açıklanmadığını düşünüyorsanız konuyu rapor edebilirsiniz.
Katılım
28 Ocak 2020
Mesajlar
19.476
Makaleler
52
Çözümler
461
Merhaba. C# ile yazılan bir yazılımı 2 defa açılmasını engellemenin birden fazla yöntemi var. Bugün sizlere 2 adet yöntem göstereceğim.

1. Mutex kullanma.

Kısaca Mutex'den bahsedeyim. Mutex, birden fazla thread başlatıldığı zaman bir thread'in ulaştığı yere diğer thread'in erişmesini engellemek/izin vermemek olarak tanımlayabiliriz. Yani bir bölüme sadece 1 thread ile ulaşmayı sağlıyoruz.

C#:
static Mutex rotate = new Mutex(true, Path.GetFileNameWithoutExtension(Application.ExecutablePath));

private void App_Load(object sender, EventArgs e){
 if (!rotate.WaitOne(TimeSpan.Zero, true)){
 MessageBox.Show("Program zaten açık.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
 Application.Exit();
 }
}

2. İşlem adı ile denetleme.

C#:
if (Process.GetProcessesByName(Path.GetFileNameWithoutExtension(Application.ExecutablePath)).Length > 1){
 MessageBox.Show("Program zaten açık.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning);
 Application.Exit();
}

İyi çalışmalar. Kolay gelsin.
 
Son düzenleme:

Yeni konular

Geri
Yukarı