Я выполняю надстройку надстройки Microsft PowerPoint Whit VSTO, которая читает информацию с аппаратного обеспечения, разработчики оборудования дали мне свой SDK для управления этим оборудованием, но у меня проблемы с его попыткой контролировать.Как я могу использовать объект после использования его в потоке STA?
У меня есть эта библиотека ARS
Существует класс ARS.BaseConnection
У меня этой переменной ARS.BaseConnection BaseConn;
Проблема заключается в том, когда я создаю новый объект типа BaseConnection
BaseConn = new ARS.BaseConnection();
Отладчик не отображает никаких исключений, POWERPNT.exe просто падает и останавливается.
Я попытался отладить POWERPNT, и он говорит, что Доступ к адресу записи нарушения доступа 0x00d20f78. Но я не программирую PowerPoint.
Я Источника, что демонстрационная программа в SDK (который на самом деле работает) имеет [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.
}
я получил COM-объект, который был отделен от его базового RCW, не может быть использован.
Как это сделать?
Код, который вы опубликовали, просто не является законным, объект мертв после окончания потока. Вам понадобится помощь от продавца, чтобы преследовать этот крах. –