我正在做一个Microsft PowerPoint加载项解决方案,它可以从硬件中读取信息,硬件开发人员给了我们SDK来控制这个硬件,但是我在尝试控制它时遇到了问题。
我有这个库
ARS
有一堂课
ARS.BaseConnection
我有这个变量
ARS.BaseConnection BaseConn;
问题是当我创建一个类型为BaseConnection
BaseConn = new ARS.BaseConnection();
调试器没有显示任何异常,POWERPNT.exe只是崩溃并停止。
我尝试调试POWERPNT,它说访问冲突写入位置0x00d20f78。但我不编写PowerPoint。
我认为SDK中的演示程序(实际上有效)在main之前有一个[STAThread],所以我认为它必须作为STA运行,所以我创建了一个新的线程:
ARS.BaseConnection BaseConn;`
public form1()
{
InitializeComponent();
System.Threading.Thread thread = new System.Threading.Thread(createBase);
thread.SetApartmentState(System.Threading.ApartmentState.STA);
thread.Start();
thread.Join();
BaseConn.Open(); // There is the problem, when I'm trying to use open() BaseConn debuger says: COM object that has been separated from its underlying RCW cannot be used.
}
private void createBase()
{
BaseConn = new ARS.BaseConnection(); //If it runs in a STA tread doesn't crash.
}
我得到与其基础RCW分离的COM对象无法使用。
我该如何使其有效?
答案 0 :(得分:0)