外部 DLL から静的 devDrv を作成する MyObject があります。devDrv が MyObject コンストラクターによって作成された場合。コードは正常に動作します。devDrv が MyObject.Connect (以下の 2 番目のオブジェクトを参照) の 1 つによって作成された場合、MyObject.Connect() への最初の呼び出しは正常に機能します。2 回目の呼び出しで、「基になる RCW から分離された COM オブジェクトは使用できません」というエラーが表示されます。devDrv は永続的ではないようです。以下の 2 番目のオブジェクトに示すように、この devDrv オブジェクトを MyObject.Connect によって作成したいと考えています。よろしくお願いします。
// this code works fine.
public sealed class MyObject
{
static ExtDeviceDriver devDrv;
public MyObject()
{
devDrv = new ExtDeviceDriver();
}
public void Connect()
{
devDrv.connect();
}
}
//this code causes exception.
public sealed class MyObject
{
static ExtDeviceDriver devDrv;
public MyObject()
{
// do not create devDrv here.
//devDrv = new ExtDeviceDriver();
}
public void Connect()
{
if (devDrv == null)
devDrv = new ExtDeviceDriver();
devDrv.connect();
}
}