C# Programın Birden Fazla Açılmasını Engelleme

Merhaba arkadaşlar bugün C Sharp ile yaptığımız programın nasıl birden fazla açılmasını engelleyeceğimizi anlatacağım.

Mutex (Mutual Exclusion), sadece bir thread’e izin verir ve proses’lerin kesilmesini engeller. Mutex, program çalıştığı anda sistemi hep gözetlemektedir bu sayede aynı programın birden fazla açılmasını engelleyebiliriz.

Windows Form Application’ı seçip projenize vereceğiniz ismi Name kısmına yazıp OK butonuna basıp projemizi oluşturuyoruz.
Windows Form Application’ı seçip projenize vereceğiniz ismi Name kısmına yazıp OK butonuna basıp projemizi oluşturuyoruz.
Mutex sınıfını kullanabilmek için öncelikle projenin Program.cs'sine "using System.Threading;" kütüphanesini projemize eklememiz gerekmektedir.
Mutex sınıfını kullanabilmek için öncelikle projenin Program.cs‘sine “using System.Threading;” kütüphanesini projemize eklememiz gerekmektedir.

 

Projenin Program.cs'sine gerekli kodlamayı yaptıktan sonra projemiz Mutex sınıfı ile birden fazla açılması engelleniyor.
Projenin Program.cs‘sine gerekli kodlamayı yaptıktan sonra projemiz Mutex sınıfı ile birden fazla açılması engelleniyor.

 

Bu yöntem dışında System.Diagnostics.Process sınıfı kullanılarakta aynı işlemi yapabiliriz.

Windows Form Application’ı seçip projenize vereceğiniz ismi Name kısmına yazıp OK butonuna basıp projemizi oluşturuyoruz.
Windows Form Application’ı seçip projenize vereceğiniz ismi Name kısmına yazıp OK butonuna basıp projemizi oluşturuyoruz.
Projenin Program.cs'sine gerekli kodlamayı yaptıktan sonra projemiz  System.Diagnostics.Process sınıfı ile birden fazla açılması engelleniyor.
Projenin Program.cs‘sine gerekli kodlamayı yaptıktan sonra projemiz System.Diagnostics.Process sınıfı ile birden fazla açılması engelleniyor.

Projenin kaynak kodları:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms; 
using System.Threading; 

namespace MutexClass
{
 static class Program
 {
 /// <summary>
 /// The main entry point for the application.
 /// </summary>
 [STAThread]
 static void Main()
 {
 bool kontrol; 
 
 Mutex mutex = new Mutex(true, "Program", out kontrol); //Örnek Mutex nesnesi oluşturalım. 
 if (kontrol == false) 
 { 
 MessageBox.Show("Bu program zaten çalışıyor."); 
 return; 
 } 
 Application.Run(new Form1()); 
 GC.KeepAlive(mutex); //Nesneyi kaldırıyoruz. 
 }
 }
}

“C# Programın Birden Fazla Açılmasını Engelleme” üzerine 2 yorum

  1. Hepsi güzel paylaşımlar emeğinize sağlık fakat paylaştıklarınız c# ‘ a başlayan insanlar için çok anlamsız ve boş şeyler aslında sayfada direk c# anlatılsa (basit seviye ) çok faydalı bir sayfa olabilir

  2. Can ayberk’in dediğine katılmıyorum. Sadece basit şeyler her yerde var. Anlamsız ve boş gören gitsin “Hello World” yazsın. 🙂 Bir de bu konuyla ilgili bir soru soracaktım. Şimdi programım otomatik bir işlem giriş paneli görevi görüyor. Bu işlemi yaparken ben başında olmamalıyım. Çünkü bir veritabanına farklı kaynaklardan veri giriyor ve günler sürecek. Program her restart attığında tekrar açılıyor ama önceki de açık kalıyor. Benim yapmak istediğim sonradan açılanı engellemek yerine öncekini kapatmak. Bunu nasıl yapabiliriz? “10:35 te açılmış program 10:45 te açılan aynı program tarafından kapatılsın” ve böyle devam etsin.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir