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,542
Çözümler
1,051
Tepki puanı
3,384
Ödüller
22
8 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()); }
 
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
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...