Yöntem 1: Thread mutex değişkenleri kullanın. Bir örneğin çalışıp çalışmadığını belirlemek için mutex değişkenleri tanımlayın. program.cs dosyasındaki Main() fonksiyonunu aşağıdaki koda değiştirin:
Not: Programda, System.Threading.Mutex ifadesi run = new System.Threading.Mutex(true, "single_test", out runone); mutex değişkeni çalıştırmak için, burada "single_test" mutex adı olur ve bu yöntem dönerse, yerel mutex veya belirli bir adlandırma sistemi mutex oluşturulursa, boolean değeri runone doğrudur; Belirtilen adlandırma sistemi mutexe zaten mevcutsa, yanlış. İsimli muteksler sistem genelinde kullanılır. Yöntem 2: Süreci değerlendirme yöntemini kullanın; programı çalıştırmadan önce, süreçte aynı isimli bir süreç olup olmadığını ve çalışma pozisyonunun da aynı süreç olup olmadığını buluruz. Process.Diagnostics isim alanında Process sınıfını C# dilinde uygulayın, ana kod şöyledir: 1. program.cs dosyasına aşağıdaki gibi bir fonksiyon ekleyin:
2. Ana () fonksiyonunu aşağıdaki koda değiştirin:
Yöntem 3: Küresel atomik yöntem, bir program oluşturmadan önce, oluşturulma anında eklenen belirli bir atom A olup olmadığını görmek için önce küresel atom tablosunu kontrol edin ve mevcut olduğunda yaratmayı durdurun; bu da programın bir örnek çalıştırdığını gösterir; Eğer yoksa, programı çalıştırın ve küresel atom tablosuna belirli bir atom A'yı eklemek isteyin; Programdan çıkarken, belirli bir atom A'yı serbest bırakmayı unutmayın, aksi takdirde bilgisayar kapanana kadar serbest bırakılmaz. C# uygulaması şöyledir: 1. WinAPI fonksiyon arayüzünü ilan edin
[System.Runtime.InteropServices.DllImport("kernel32.dll")] public static extern UInt32 GlobalAddAtom(String lpString); Atomlar ekle [System.Runtime.InteropServices.DllImport("kernel32.dll")] public static extern UInt32 GlobalFindAtom(String lpString); Atomları bulun [System.Runtime.InteropServices.DllImport("kernel32.dll")] public static extern UInt32 GlobalDeleteAtom(UInt32 nAtom); Atomları sil 2. Ana() fonksiyonunu aşağıdaki şekilde değiştirin:
3. FormClosed etkinliğine aşağıdaki kodu ekleyin: GlobalDeleteAtom(GlobalFindAtom("jiaao_test")); Atomik "jiaao_test"i sil --------------------------------------*-------*--------*----------------------------------------------- Yukarıdakiler, birbirini dışlayan bir program oluşturmanın temel genel fikridir ve şahsen ilk yöntemin en basit olduğunu düşünüyorum. |