このオブジェクトは (サード パーティの DLL を介して) 外部ハードウェア デバイス オブジェクトを作成し、ハードウェア デバイス オブジェクトは 1 回しか作成できないため、ロックする必要があるオブジェクトを作成するアプリがあります。このアプリの複数のインスタンスが起動された場合、最初のインスタンスのみがこの C# オブジェクトを作成できる必要があります。サブシーケンス インスタンスは、オブジェクトがロックされており、オブジェクトを作成できないことを確認する必要があります。このオブジェクトの作成は複数のアプリ インスタンス (複数のプロセス) で行われるため、ミューテックスを使用しました。ただし、コードはミューテックスでロックされません。それぞれが独自のロックを作成する複数のインスタンスを実行していますか?
public sealed class MyObject
{
private static MyObject _myObject;
static ExtDeviceDriver devDrv;
private readonly static Mutex mut = new Mutex();
private MyObject()
{
mut.WaitOne();
//Thread safe code here.
devDrv = new ExtDeviceDriver();
}
~MyObject()
{
mut.ReleaseMutex();
}
// object accessor
public static MyObject GetMyObject
{
get
{
if (_myObject == null)
_myObject = new MyObject();
return _myObject;
}
}
}