Delphi OLE Automation冻结GUI

时间:2013-03-05 09:41:26

标签: delphi ms-word ole

我们在Delphi 7中使用一些OLE自动化来打开word文档,然后加载,保存并将其加载到数据库中。

这样工作正常,但部分要求是在OLE位发生时有一个进度条,如果OLE部分需要太长时间也会超时。

我们遇到的问题是,当OLE正在发生时,整个GUI都会冻结。进度条什么都不做,然后在最后拍摄。

关于我们如何处理这个问题的任何想法?

1 个答案:

答案 0 :(得分:5)

我认为这很难干净利落。据我所知,Word自动化并没有给你机会取消长时间运行的事件。它也没有通知你进展情况。

你可以做的最好的事情就是首先将自动化转移到一个单独的线程中。然后在长时间运行的自动化过程中抛出一个选取框进度条。至少这将让用户知道发生了什么事情。

就取消而言,您可以让用户从进度对话框中取消,然后继续您的程序。您可以杀死自动化线程,但这会使Word处于错误状态。我只是让它继续完成,但忽略了结果。从用户的角度来看,这将很好地实现您的目标,即使它在幕后有点脏。