我们在Delphi 7中使用一些OLE自动化来打开一个word文档,然后加载,保存并加载到数据库中。德尔福OLE自动化冻结图形用户界面
这工作正常,但要求的一部分是在OLE位发生时有一个进度条,如果OLE部分需要的时间太长,也是一个超时。
我们遇到的问题是当OLE发生时整个GUI冻结。进度条什么都不做,然后在最后射击。
关于我们如何解决这个问题的任何想法?
我们在Delphi 7中使用一些OLE自动化来打开一个word文档,然后加载,保存并加载到数据库中。德尔福OLE自动化冻结图形用户界面
这工作正常,但要求的一部分是在OLE位发生时有一个进度条,如果OLE部分需要的时间太长,也是一个超时。
我们遇到的问题是当OLE发生时整个GUI冻结。进度条什么都不做,然后在最后射击。
关于我们如何解决这个问题的任何想法?
我认为这将很难做到干净利落。据我所知,Word自动化不会让您有机会取消长时间运行的事件。它也不会通知你进度。
也许你能做的最好的事情是首先将自动化转移到一个单独的线程中。然后在进行长时间运行的自动化的同时抛出一个选取框进度条。至少会让用户知道发生了什么事情。
只要取消,您可以让用户从您的进度对话框中取消,然后让您的程序继续。您可以终止自动化线程,但这会使Word处于不良状态。我只是让它继续完成,但然后忽略结果。从用户的角度来看,这将很好地满足你的目标,即使它在幕后有点肮脏。
会使用自己的线程是一个选项? – bummi 2013-03-05 09:51:03