我做到以下几点:的DeleteFile失败
复制的可执行文件
C:\temp\x.exe
与
System.Diagnostics.Process.Start
启动可执行文件,然后等待过程中退出,同步通过拨打WaitForExit
对Process
对象Start
返回。删除可执行
C:\temp\x.exe
在某些机器上,这个工程很大,但对他人,调用DeleteFile
失败,因为该文件仍然在使用。因此,似乎一旦WaitForExit
返回,它并不意味着Windows已完成EXE。
我在这里有什么选择?显而易见的是几毫秒后再次尝试DeleteFile
,在一个循环中,直到删除成功或循环超时。但是有没有一种更清晰的方式来等待每个人关闭文件?
第一个已被排除;我使用CopyFile,没有什么花哨,并且手柄已经正确关闭。它必须是操作系统在幕后执行某些操作,在它关闭执行过程后不久。我实施了重试循环,但我对此感到不满。我想这可能是一个有趣的事情,用ProcMon等工具进一步调查。 – 2009-08-21 15:42:12