ole 不能在多线程里面???
创建一个线程getTitle 用来取得word文档的标题
type
TGetTitle = class(TThread)
private
V: OleVariant;
{ Private declarations }
protected
procedure Execute; override;
public
constructor create;
destructor Destroy; override;
end;
implementation
constructor TGetTitle.Create;
begin
V := CreateOleObject('Word.Application'); // 在构造函数里面创建了v
V.visible := false;
inherited Create(true);
end;
destructor TGetTitle.Destroy;
begin
v.quit; //每次运行到这里出错了!!
inherited Destroy;
end;
procedure TGetTitle.Execute;
begin
freeonTerminate:=true;
{ 用 v.document.open() 打开每个文档 然后取得标题
v.document.close;
}
end;
//////////////////////////////////
freeonTerminate为true ;线程因该在运行完以后析构,但是每次运行到v.quit
的时候总是出现 没有调用 colinitialize 的异常,word没有退出(进程列表里面有winword.exe) 为什么啊?
如果将 freeonTerminate 设为false;
而在主窗口里面直接调用 Gettitle.terminate 就不出错了。
为什么线程自己退出就不能v.quit呢?