c#グローバルな相互ボディモードの信頼できる実現C#のMutexクラスは、複数のスレッドまたはプロセスリソースへのアクセスを制御するメカニズムを提供します。グローバルな相互の相互団体には体系的な範囲があり、安全で信頼できる使用を確保するためのユニークな課題を提案しています。この記事では、グローバルな相互エクスペットの作成と効果的な使用の包括的なモデルについて説明し、地域の設定の独立性、相互解雇の修正、異常な条件の処理の重要な側面を解決します。 モードの実装
以下代码示例展示了使用全局互斥体的可靠模式:
关键特性
<code class="language-csharp">using System.Runtime.InteropServices; //GuidAttribute using System.Reflection; //Assembly using System.Threading; //Mutex using System.Security.AccessControl; //MutexAccessRule using System.Security.Principal; //SecurityIdentifier // ... // 主应用程序逻辑 static void Main(string[] args) { // 获取应用程序的唯一GUID string appGuid = ((GuidAttribute)Assembly.GetExecutingAssembly() .GetCustomAttributes(typeof(GuidAttribute), false) .GetValue(0)).Value.ToString(); // 创建全局唯一的互斥体ID string mutexId = string.Format( "Global\{{{0}}}", appGuid ); // 为多用户使用建立安全设置 var allowEveryoneRule = new MutexAccessRule( new SecurityIdentifier( WellKnownSidType.WorldSid , null) , MutexRights.FullControl , AccessControlType.Allow ); var securitySettings = new MutexSecurity(); securitySettings.AddAccessRule(allowEveryoneRule); // 使用指定的ID和安全设置初始化互斥体 using (var mutex = new Mutex(false, mutexId, out bool createdNew, securitySettings)) { // 尝试获取互斥体句柄,设置超时 var hasMutexHandle = false; try { hasMutexHandle = mutex.WaitOne(5000, false); } catch (AbandonedMutexException) { // 记录日志并获取被放弃的互斥体 hasMutexHandle = true; } // 在互斥体范围内执行关键操作 if (hasMutexHandle) { // ... mutex.ReleaseMutex(); } } }</code>
地域の設定の独立性:相互化されたIDは、アプリケーションのGUID生成を使用して、異なる領域でユニークであることを確認します。
相互分散が解放されるようにしてください。以上がC#に堅牢なグローバルミューテックスパターンを実装する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。