我正在尝试在线程中使用 COM 接口。根据我的阅读,我必须CoInitialize/CoUninitialize
在每个线程中调用。
虽然这工作正常:
procedure TThreadedJob.Execute;
begin
CoInitialize(nil);
// some COM stuff
CoUninitialize;
end;
当我将调用移至构造函数和析构函数时:
TThreadedJob = class(TThread)
...
protected
procedure Execute; override;
public
constructor Create;
destructor Destroy; override;
...
constructor TThreadedJob.Create;
begin
inherited Create(True);
CoInitialize(nil);
end;
destructor TThreadedJob.Destroy;
begin
CoUninitialize;
inherited;
end;
procedure TThreadedJob.Execute;
begin
// some COM stuff
end;
我得到EOleException: CoInitialize has not been called异常,我不知道为什么。