このコードを実行した後、「foo」ディレクトリが残っていない場合があります。
string folder = Path.Combine(Path.GetTempPath(), "foo");
if (!Directory.Exists(folder))
Directory.CreateDirectory(folder);
Process.Start(@"c:\windows\explorer.exe", folder);
Thread.Sleep(TimeSpan.FromSeconds(5));
Directory.Delete(folder, false);
Directory.CreateDirectory(folder);
Windows エクスプローラーはフォルダーへの参照を保持しているように見えるため、最後の CreateDirectory は関係ありませんが、元のフォルダーは削除されます。コードを修正するにはどうすればよいですか?
編集:私の質問が明確ではなくて申し訳ありません。私の目的は、空の「foo」ディレクトリを作成することです。ディレクトリが既に存在する場合は、削除して新しく作成します。問題は、Windows エクスプローラーがディレクトリを参照している場合、CreateDirectory 呼び出しがサイレントに失敗することがあるということです。例外は発生しません。ディレクトリは作成されていません。
上記のコードは、私のコンピューターで問題を再現します。最後の 2 行のみが実際のアプリケーションに属します。前の行がセットアップされます。コードを実行した後、「foo」は常に存在しますか? これは、私のPCでは半分の時間ではありません。
とりあえず、fooの各ファイルとサブディレクトリを手動で削除しています。