ole 不能在多线程里面???

spacedragon 2003-08-15 04:22:58
创建一个线程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呢?




...全文
77 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zousoft 2003-08-16
  • 打赏
  • 举报
回复
不知道, 是不是要同步呀? 套在Synchronize()里试试呢.
zhp97 2003-08-16
  • 打赏
  • 举报
回复
不怎么懂
spacedragon 2003-08-16
  • 打赏
  • 举报
回复
谢谢
Iamfish 2003-08-15
  • 打赏
  • 举报
回复
帮你UP。

我也在写多线程方面的。
spacedragon 2003-08-15
  • 打赏
  • 举报
回复
在线等!!!!!!!!!!!!

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧