Как сделать основной поток консольного приложения MTA?
С помощью Delphi, как я могу создать консольное приложение (Windows) с основным потоком, который инициализируется как COINIT_MULTITHREADED
?
Если я позвоню CoInitializeEx(nil, COINIT_MULTITHREADED)
в самом первом операторе я получаю HRESULT 0x80010106 (невозможно изменить режим потока после того, как он установлен), поэтому, очевидно, некоторый ранее запущенный код уже вызывался CoInitialize/Ex
,
Как я могу получить основной поток, чтобы быть COINIT_MULTITHREADED
?
1 ответ
Один из модулей, включенных в вашу программу в результате использования вашего предложения, уже инициализировал COM в своем разделе инициализации модуля.
Вам нужно идентифицировать этот блок и удалить его из вашей программы.
Рассмотрим эту программу:
{$APPTYPE CONSOLE}
uses
ActiveX,
ComObj;
begin
Writeln(CoInitializeEx(nil, COINIT_MULTITHREADED));
end.
Выход 0
который демонстрирует, что пустое консольное приложение не инициализирует COM.