Aşağıdaki kod da yanlış!! Yukarıdaki doğru kod!!
Bazen sadece bir uygulamanın çalışmasına izin vermemiz gerekir ve süreç başladığında, bir uygulamanın çalıştığını fark ederse otomatik olarak durur. Genellikle bunu Ana fonksiyonda Mutex mutex aracılığıyla uygularız, bu genellikle şöyle yazılır:
Cevap ararken genellikle aceleyle gelip gideriz, Mutex'in özelliklerini ve önlemlerini görmezden geliriz. Basit bir testten sonra, tamam, al ve kullan. Bu noktada, önemli bir önkoşulu göz ardı ediyoruz:Mutex adlandırma gelenekleri. Yukarıdaki yazım yöntemi, tek bir kullanıcı altında sorunsuz çalışır; Çok kullanıcılı sistemde her kullanıcı bir örnek başlatabilir, bu yüzden tek bir örnek garanti edilemez.
Eğer bir terminal sunucuda kullanmanız gerekiyorsa ve sadece bir örnek izin vermeniz gerekiyorsa, aşağıdaki yöntemi kullanın:
İşte MSDN'nin tanımı:
Terminal hizmetleri çalıştıran sunucularda, adlandırılmış sistem mutex'i iki seviyeli görünürlüğe sahip olabilir. İsim "Global\" önekiyle başlarsa, mutex tüm terminal sunucu oturumlarında görünürdür. İsim "Local\" önekiyle başlarsa, mutex yalnızca onu oluşturan terminal sunucu oturumunda görünürdür. Bu durumda, sunucudaki diğer her terminal sunucu oturumu aynı isimle ayrı bir mutex olabilir. Eğer bir mutex oluşturuyorsanız ve bir ön ek belirtmediğinizde, "Local\" preekini alır. Bir terminal sunucu oturumunda, farklı isim öneklerine sahip iki mutex bağımsız mutextir ve bu iki mutex terminal sunucu oturumundaki tüm süreçlere görünürdür. Yani, "Global" ve "Local" önekleri, mutex adının terminal sunucu oturumuna göre aralığını tanımlar, süreci değil.
|