Çö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.

300319

Zettapat
İlk 5 Haneli Mesajınız!
Katılım
4 Aralık 2018
Mesajlar
21.763
Makaleler
63
Çözümler
478
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:

Technopat Haberler

Yeni konular

Geri
Yukarı