この質問に関連して、ミューテックスに名前を付けるためのベストプラクティスは何ですか? これは OS やバージョン (特に Windows の場合) によって異なる可能性があることを認識しているため、回答時にプラットフォームを指定してください。私の興味は Win XP と Vista です。
5 に答える
提案:
オブジェクト タイプ (この場合は Mutex) とアプリケーションの名前空間を一意の名前に組み込みます。これは一般的に安全です。本当に安全にしたい場合は、Guid も追加してください。
例:
string mutexName = "MUTEX: Skyz.Messaging.ThreadPooling.MyAppSingleInstance";
利点:
アプリの命名規則を作成することで、多くのオブジェクト名を簡単に管理し、より読みやすいコードを作成し、既存および将来の開発者がコードを簡単に理解できるようになります。
ヒント:
コードで Mutex を直接使用する代わりに、再利用可能なラッパー クラスを記述します。これにより、実装を変更したり、微調整を追加したりする場合に備えて、コードをより保守しやすくすることができます。使い捨てパターンを使用してミューテックスを削除することを忘れないでください。そうしないと、問題が発生します!
using (SingletonProcess singletonProcess = new SingletonProcess("MUTEX: Skyz.Apps.MessagingQueue.InstanceMarker"))
{
if (singletonProcess.IsDuplicateInstance)
{
ConsoleWriter.WriteColorLine("An instance of the ExporterService exists, you cannot start a second instance.");
return
}
CreateMutex サンプルを Google 検索すると、「MyMutex」が最も一般的に選択されているミューテックス名であることがわかります。
したがって、一意性を保証するために、ミューテックスに「NotMyMutex」という名前を付ける必要があります。
保護対象の説明を「ガード」という言葉と組み合わせることができます
私は過去にGUIDを使用したことがありませんが、世界中のすべての開発者がさまざまなソフトウェアを使用していることを考えると、それは良い考えだと思い始めています。
一意であることが保証できる非常にあいまいな名前を考えているのでない限り、GUIDについて考える必要があります。