2

かなり奇妙な状況があります。2 つのアプリケーションがあります。

1) C:\MyFolder1\First.exe

2) C:\MyFolder2\Second.exe

First.exe は Second.exe を実行して終了します。

Process.Start(@"C:\MyFolder2\Second.exe");

// And exit.

Seconds.exe は数秒待ってから、「C:\MyFolder1\」フォルダを削除しようとします。

// Wait for 5 seconds - First.exe terminated by that time for 100%

Directory.Delete(@"C:\MyFolder1\", true);

「別のプロセスで使用されているため、プロセスはファイル 'C:\MyFolder1\' にアクセスできません。」というエラーが表示されてアクションが失敗します。First.exe ファイル (実際にはフォルダー内のすべてのファイル) は削除できますが、フォルダー自体は削除できません。

フォルダーが 2 番目のプロセスによってロックされている理由を知っている人はいますか?

4

3 に答える 3

4

プロセスにはデフォルトの作業ディレクトリがあります。ProcessStartInfo.WorkingDirectory で初期値を設定します。そのフロア マットをジャークすることはできません。プロセスが終了するか、Environment.CurrentDirectory で作業ディレクトリを変更するまで、そのディレクトリをロックしたままにします。設定していないため、Second.exe のデフォルトの作業ディレクトリは C:\MyFolder1 です。

于 2012-11-14T02:28:29.573 に答える
0

First.exe が停止しているとは思えません。プロセスツリーを確認してください。(フォルダ 1 はこのプロセスによってロックされます)

于 2012-11-14T02:23:50.067 に答える
0

Process.WaitForExit を使用して、それが完了したことを確認します (そして、おそらくその 5 秒を回避します)

于 2012-11-14T04:58:21.123 に答える