C# Programın birden fazla açılmasını engellemek

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
PROGRAMMER
Seçkin Üye
Katılım
26 Ara 2015
Mesajlar
401
Çözümler
1
Tepki puanı
165
Ödüller
9
Yaş
27
10 HİZMET YILI
C#:
bool AcikUygulamaVar = false;
            Mutex m = new Mutex(true, "UygulamaAdı", out AcikUygulamaVar);
            if (AcikUygulamaVar)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Kullanıcı_girisi());
            }
            else
            {
                MessageBox.Show("Uygulamadan aynı anda bir tane açabilirsiniz!", "AÇIK UYGULAMA VAR!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
 
Lelouch Vi Britannia
Onaylı Üye
Katılım
30 Kas 2020
Mesajlar
69
Çözümler
1
Tepki puanı
11
Ödüller
2
Yaş
25
5 HİZMET YILI
Selamlar,

try
{
Mutex m = Mutex.OpenExisting("UygulamaAdı");
MessageBox.Show("Uygulamadan aynı anda bir tane açabilirsiniz!", "AÇIK UYGULAMA VAR!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
catch (WaitHandleCannotBeOpenedException)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Kullanıcı_girisi());
}

Mutex oluşturma işlemini doğrudan if koşulunun içine yerleştirsek nasıl olur.
 
Onaylı Üye
Katılım
15 Mar 2023
Mesajlar
50
Tepki puanı
0
Yaş
34
3 HİZMET YILI
hocam tam anlamıyorum ama çok detaylı güzel video çeken güzel insanlar var izleyebilirsin
 
Admin
Katılım
9 Eki 2017
Mesajlar
13,541
Çözümler
1,051
Tepki puanı
3,383
Ödüller
22
8 HİZMET YILI
Selamlar,

try
{
Mutex m = Mutex.OpenExisting("UygulamaAdı");
MessageBox.Show("Uygulamadan aynı anda bir tane açabilirsiniz!", "AÇIK UYGULAMA VAR!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
catch (WaitHandleCannotBeOpenedException)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Kullanıcı_girisi());
}

Mutex oluşturma işlemini doğrudan if koşulunun içine yerleştirsek nasıl olur.
Eğer oluşturulan mutex'in kontrolü için sadece tek bir koşulun kontrol edilmesi yeterliyse "try-catch" bloğunu kaldırıp "mutex"'i doğrudan "if" koşulunun içine yerleştirebilirsini aşağıdaki vereceğim örnek mutex'in doğrudan "if" koşulunun içine yerleştirilmesini gösterecektir:

bool createdNew; Mutex m = new Mutex(true, "UygulamaAdı", out createdNew); // Mutex'i oluşturuyoruz if (!createdNew) // Eğer Mutex zaten varsa { MessageBox.Show("Uygulamadan aynı anda bir tane açabilirsiniz!", "AÇIK UYGULAMA VAR!", MessageBoxButtons.OK, MessageBoxIcon.Error); } else // Mutex yoksa { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Kullanıcı_girisi()); }
 
Onaylı Üye
Katılım
12 Mar 2023
Mesajlar
51
Tepki puanı
1
Yaş
39
3 HİZMET YILI
Tam olarak nasıl yapıyoruz bende bir çok program 1'den fazla açık oluyor
 
Lelouch Vi Britannia
Onaylı Üye
Katılım
30 Kas 2020
Mesajlar
69
Çözümler
1
Tepki puanı
11
Ödüller
2
Yaş
25
5 HİZMET YILI
Eğer oluşturulan mutex'in kontrolü için sadece tek bir koşulun kontrol edilmesi yeterliyse "try-catch" bloğunu kaldırıp "mutex"'i doğrudan "if" koşulunun içine yerleştirebilirsini aşağıdaki vereceğim örnek mutex'in doğrudan "if" koşulunun içine yerleştirilmesini gösterecektir:

bool createdNew; Mutex m = new Mutex(true, "UygulamaAdı", out createdNew); // Mutex'i oluşturuyoruz if (!createdNew) // Eğer Mutex zaten varsa { MessageBox.Show("Uygulamadan aynı anda bir tane açabilirsiniz!", "AÇIK UYGULAMA VAR!", MessageBoxButtons.OK, MessageBoxIcon.Error); } else // Mutex yoksa { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Kullanıcı_girisi()); }
Mutex nesnesinin doğru kullanıldığından emin olmak için bazı ek açıklamalar eklemek daha iyi olabilir. Örneğin, Mutex nesnesinin kullanımı tamamlandıktan sonra mutlaka serbest bırakılması gerekir. Bunun için, kodun sonuna "m.ReleaseMutex();" eklenmelidir.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst