2
我有一个MyObject,它从外部DLL创建一个静态devDrv。如果devDrv是由MyObject构造函数创建的。代码工作正常。如果devDrv是由MyObject.Connect之一创建的(请参阅下面的第二个对象),第一次调用MyObject.Connect()可以正常工作。在第二次调用时,我会得到这个错误:“已经从其底层RCW分离的COM对象不能使用”。这似乎是devDrv不持久。我希望这个devDrv对象由MyObject.Connect创建,如下面的第二个对象所示。我会感谢你的帮助。静态C#对象原因:已从其基础RCW分离的COM对象不能使用
// 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();
}
}
您需要记录如何在代码中使用线程。 –