Farklı yöntemler kullanarak program açıkken ikinci kez açılmasını engellemek
Windows uygulamalarında program eğer çalışıyorsa ikinci kez açılmasını engellemek için aşağıdaki farklı yöntemlerden projemizin yapısına uygun olanı kullanabiliriz.
1-Sistemde çalışan uygulamalar arasından ilgili isme sahip programın açıklık sayısını kontrol et.
if (Process.GetProcessesByName("YazarKasaAktarim").Length > 1)
{
//zaten çalışıyor
MessageBox.Show("Programın bir örneği şu an açık!");
}
else
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmGiris());
}
2-Çalışan uygulamayı bul ve kapat.
Process[] calisanIslem = Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName);
foreach (Process islem in calisanIslem)
{
if (Process.GetCurrentProcess().Id != islem.Id)
{
islem.Kill();
}
}
3-Mutex yöntemi.
bool yeniOlusan;
Mutex m = new Mutex(true, "Yazar Kasa Aktarım", out yeniOlusan);
if (!yeniOlusan)
{
MessageBox.Show("Programın bir örneği şu an açık!", "Yazar Kasa Aktarım");
return;
}
İkinci yöntemde program açıksa programı kapattığından ekranda yarım kalmış bir çalışma olabilir. Kapatıldığında kullanıcı bunları kaybetmiş olur. Programı kapatıp açmaktansa; kullancıya programın açık olduğunu söylemek ve programın yeniden açılmasını engellemek daha sağlıklı olur.
Bu yöntemlerin tamamını aşağıdaki metod içinde kullandık.
static void Main()
{
}