Tôi đang cố gắng sử dụng giao diện COM trong một chuỗi. Từ những gì tôi đã đọc tôi phải gọi CoInitialize/CoUninitialize
trong mỗi chủ đề.TThread và COM - "CoInitialize không được gọi là", mặc dù CoInitialize được gọi trong hàm dựng
Trong khi điều này đang làm việc tốt:
procedure TThreadedJob.Execute;
begin
CoInitialize(nil);
// some COM stuff
CoUninitialize;
end;
khi tôi di chuyển các cuộc gọi đến constructor và destructor:
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;
tôi nhận được EOleException: CoInitialize chưa được gọi là ngoại lệ và tôi không có đầu mối tại sao.
Cảm ơn bạn đã trả lời cực nhanh. – forsajt