Создаю дочерний поток. В него передаю ссылку на интерфейс сервера (IDispatch) из главного потока. Когда вызываю метод Invoke выдаёт ошибку с текстом, неизвестная ошибка. Когда вызываю их главного потока, то всё нормально. В чём грабли???
Здравствуйте, Аноним, Вы писали:
А>Создаю дочерний поток. В него передаю ссылку на интерфейс сервера (IDispatch) из главного потока. Когда вызываю метод Invoke выдаёт ошибку с текстом, неизвестная ошибка. Когда вызываю их главного потока, то всё нормально. В чём грабли???
Скорее всего тебе придется использовать Global Interface Pointer.
Почитай вот тут
Marshal interface pointers across apartments
Скачай себе ComLib.pas (дочитаеш до конца статьи будет линка).
Создай TGIP.Create (aUnk, IDispatch) в основном потоке, передай GIP в дочерний поток.
Используй TGIP.GetIntf в дочернем потоке чтоб взять свой IDispatch