我做到以下幾點:的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