Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir kaynağa özel erişim sağlamak için bir nesnesi kullanabilirsiniz Mutex . Mutex sınıfı, Monitor sınıfından daha fazla sistem kaynağı kullanır, ancak uygulama etki alanı sınırları arasında taşınabilir, birden fazla bekleme ile kullanılabilir ve farklı işlemlerdeki iş parçacıklarını senkronize etmek için kullanılabilir. Yönetilen eşitleme mekanizmalarının karşılaştırması için bkz. Eşitleme Temel Bilgilerine Genel Bakış.
Kod örnekleri için, Mutex oluşturucuların başvuru belgelerine bakın.
Mutexes kullanma
İş parçacığı sahiplik istemek için bir mutexin WaitOne yöntemini çağırır. Çağrı, mutex kullanılabilir duruma gelene kadar veya isteğe bağlı zaman aşımı aralığı geçene kadar engeller. Bir mutex'e hiçbir iş parçacığı sahip değilse, durumu işaret edilmiş olur.
Bir iş parçacığı, ReleaseMutex yöntemini çağırarak bir mutex'i serbest bırakır. Mutex'ler iş parçacığı benzitesi içerir; yani, mutex yalnızca sahibi olan iş parçacığı tarafından serbest bırakılabilir. Bir iş parçacığı sahip olmadığı bir mutex bırakırsa, iş parçacığında bir ApplicationException oluşturulur.
Mutex sınıfı WaitHandle sınıfından türetildiği için, diğer bekleme tanıtıcılarıyla birlikte bir WaitAll öğesinin sahipliğini istemek amacıyla WaitAny sınıfının statik WaitHandle veya Mutex yöntemlerini de çağırabilirsiniz.
Eğer bir iş parçacığı bir Mutex'e sahipse, bu iş parçacığı yürütmesini engellemeden tekrarlanan bekleme isteği çağrılarında aynı Mutex'i belirtebilir; ancak sahipliği serbest bırakmak için Mutex'yi o kadar kez serbest bırakması gerekir.
Bırakılmış mutexler
Bir iş parçacığı Mutex'u serbest bırakmadan sonlandırılırsa, mutex'in sahipsiz kaldığı söylenir. Bu durum genellikle önemli bir programlama hatası olduğunu gösterir çünkü mutex'in koruduğu kaynak tutarsız bir durumda bırakılabilir. mutex'i alan sonraki iş parçacığında bir AbandonedMutexException oluşturulur.
Sistem genelinde bir mutex söz konusu olduğunda, terk edilmiş bir mutex bir uygulamanın aniden sonlandırıldığını gösterebilir (örneğin, Windows Görev Yöneticisi kullanılarak).
Yerel ve sistem mutex'leri
Mutexler iki türdendir: yerel mutexler ve adlandırılmış sistem mutexleri. Bir adı kabul eden bir oluşturucu kullanarak bir Mutex nesne oluşturursanız, bu adın işletim sistemi nesnesiyle ilişkilendirilir. Adlandırılmış sistem mutex'leri işletim sistemi genelinde görünür ve işlemlerin etkinliklerini eşitlemek için kullanılabilir. Aynı adlandırılmış sistem mutex'ini temsil eden birden çok Mutex nesne oluşturabilir ve yöntemini kullanarak OpenExisting mevcut adlandırılmış bir sistem mutex'ini açabilirsiniz.
Yerel bir mutex yalnızca sizin işleminizde bulunur. İşleminizde yerel Mutex nesnesine referansı olan herhangi bir iş parçacığı tarafından kullanılabilir. Her Mutex nesne ayrı bir yerel mutex'tir.
Sistem mutex'leri için erişim denetimi güvenliği
.NET Framework, adlandırılmış sistem nesneleri için Windows erişim denetimi güvenliğini sorgulama ve ayarlama olanağı sağlar. Sistem nesneleri genel olduğundan ve bu nedenle kendi dışındaki kodlar tarafından kilitlenebildiği için sistem mutex'lerini oluşturma anından korumanız önerilir.
Mutexler için erişim kontrol güvenliği hakkında bilgi için, MutexSecurity ve MutexAccessRule sınıflarına, MutexRights numaralandırmasına, GetAccessControl sınıfının SetAccessControl, OpenExisting ve Mutex yöntemlerine ve Mutex(Boolean, String, Boolean, MutexSecurity) oluşturucusuna bakın.
Uyarı
Sistem mutex'leri için erişim denetimi güvenliği yalnızca .NET Framework ile kullanılabilir, .NET Core veya .NET 5+ ile kullanılamaz.