Tôi đang cố gắng tìm một cách an toàn/xác định để phát hành một giao diện được đóng gói trong một OleVariant.Cách chính xác để giải phóng một giao diện đằng sau một OleVariant là gì?
AFAICS Delphi phát hành tham chiếu giao diện ở phần cuối của quy trình, nhưng trong trường hợp của tôi, tôi phải thực hiện trước đó, vì tôi phải tắt COM.
Tôi mặc dù đưa OleVariant vào thể hiện lớp phụ mà tôi có thể miễn phí trước khi gọi CoUninitialize
.
procedure Test;
var
Container: TLibraryContainer; // Holds the OleVariant
begin
CoInitialize(nil);
try
Container := TLibraryContainer.Create;
try
{...}
finally
Container.Free;
end;
finally
CoUninitialize;
end;
end;
Giải pháp này an toàn hoặc có giải pháp tốt hơn mà tôi đã bỏ qua?
Tùy chọn thực sự duy nhất là sử dụng thường trình phụ, trừ khi bạn tận hưởng các cuộc gọi hàm đếm và kiểm tra mã trình tạo được tạo để đảm bảo không có biến cục bộ ẩn. 1 để gọi quy trình 'DoWork' của bạn ...' DoWork', xem câu trả lời đã xóa của tôi để biết chi tiết. –
@Cosmin Tôi đồng ý rằng tùy chọn thứ hai tốt hơn. –
Trên thực tế mã thực sự của tôi phức tạp hơn một chút và tôi nghĩ rằng tôi sẽ phải sử dụng biến thể đầu tiên của bạn, nhưng tôi sẽ cố gắng cấu trúc lại mã để tôi có thể sử dụng mã thứ hai. :) –