[英]How to get the main thread of a console app to be MTA?
使用Delphi,如何創建一個主線程初始化為COINIT_MULTITHREADED
的(Windows)控制台應用程序?
如果在第一條語句中調用CoInitializeEx(nil, COINIT_MULTITHREADED)
得到HRESULT 0x80010106(設置后無法更改線程模式),因此顯然一些先前運行的代碼已稱為CoInitialize/Ex
。
如何獲取主線程為COINIT_MULTITHREADED
?
由於use子句而導致程序中包含的單元之一已經在其單元初始化部分中初始化了COM。
您需要識別該單元,並將其從程序中刪除。
考慮以下程序:
{$APPTYPE CONSOLE}
uses
ActiveX,
ComObj;
begin
Writeln(CoInitializeEx(nil, COINIT_MULTITHREADED));
end.
輸出為0
,表明空的控制台應用程序未初始化COM。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.