私は次のことを行います:
実行可能ファイルをにコピーします
C:\temp\x.exe
で実行可能ファイルを開始し、 によって返されたオブジェクト
System.Diagnostics.Process.Start
を呼び出して、プロセスが同期的に終了するのを待ちます。WaitForExit
Process
Start
実行可能ファイルを削除する
C:\temp\x.exe
一部のマシンでは、これはうまく機能しますが、他のマシンでは、ファイルがまだ使用されているため、への呼び出しがDeleteFile
失敗します。したがって、一度WaitForExit
戻ったとしても、Windows が EXE で終了したことを意味するわけではないようです。
ここでのオプションは何ですか? DeleteFile
削除が成功するか、ループがタイムアウトするまで、数ミリ秒後にループで再試行することは明らかです。しかし、ファイルがすべての人によって閉じられるのを待つためのよりクリーンな方法はありますか?