私はマルチスレッドアプリケーションを開発しています。私は私のコードのどこかに持っている:二行目は時々罰金と他の回を実行しますC#ファイルの移動と上書き
File.Delete(sidetapedata);
File.Move(sidetapedata2, sidetapedata); //sidetapedata and sidetapedata2 are two file paths that correspond to sidetapedata.txt and sidetaptdata2.txt in some directory.
、それがスローIOException
:
Cannot create a file when that file already exists.
sidetapedata
ファイルが、その1つにアクセスされる1件の以上のスレッドがありますこのファイルのみを読み取り、書き込み操作はしません。競合状態を保護するためにロックを使用しています。なぜこれが起こっているのか分かりません。
UPDATE:ビジュアルC#デバッガは、これらのファイルを含むディレクトリに探して、私は、この例外を示していた場合であっても、私が見る何sidetapedata.txt
ファイルはありませんが、sidetapedata2.txt
ファイルがあります!
アップデート2:sidetapedata.txt
とsidetapedata2.txt
が、それはありません意味Delete
コールして、ファイルシステムで起動いくつかのイベントがありますしない限り、これが起こる理由を必ず空白
でFileStreamを使用し、Windowsの/ウイルス対策/など、時々ファイル「が存在」Windowsを尋ねた後、しばらくはそれを削除することを確認します。 –