ハードウェアから情報を読み取る VSTO を使用して 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 オブジェクトを使用できません。
どうすればこれを機能させることができますか?