等到文件存在,然后继续执行程序

时间:2013-04-15 07:10:39

标签: delphi wait

我有一个显示模态形式的Delphi应用程序插件。在单独的表单代码中,它调用另一个exe文件来处理一些文件,然后关闭。插件的第二部分操作来自exe的创建文件。

我的问题是,程序在实际创建外部文件之前仍在继续。有没有办法暂停我的Delphi插件并循环或等到FileExists返回true然后继续?

伪代码:

Launch form (ShowModal)
Form runs exe, manipulates external files
Close Form
Form released
if ExternalFiles exist, do stuff.

因为外部文件是在我的插件之外被操纵的,所以我不知道它们何时完成并且已经被创建。

2 个答案:

答案 0 :(得分:9)

据推测,在启动的exe退出时文件存在。您可以使用CreateProcess()启动exe,然后使用WaitForSingleObject()或相关函数来检测该exe何时退出。然后您可以根据需要使用它创建的文件。

答案 1 :(得分:1)

在计时器中使用“filexists”功能,该计时器在您启动后每秒检查一次。

另一种方法是使用

while not fileexists('c:\temp\somfile.txt') do begin
  sleep(1000);
end;

但我不喜欢它,因为它会锁定你的应用程序。