0

確かに簡単に修正できる状況がありますが、次のような1行のコードが1つあります。

My.Computer.FileSystem.MoveFile(f_source, f_dest, True)

true は上書きオプションの場合です。

ファイルの一括移動中に、ソース ファイルが取り残されることが時々ありますが、宛先ファイルは正常にコピーされます。

それを取り巻くエラー トラップ (VB.NET/try/catch) がありますが、エラーは発生しません。リモート(VPN)アクセス中にのみ発生するようで、サイトでの同じ操作は明らかにされていません。

移動は少しラウンドロビンである削除ドライブとの間であるため、ある種のバッファ充填中に発生していると思われます。

それ以来、移動後にチェックを追加して、両方のファイルが存在するかどうかを確認し、存在する場合はソースを削除しました。これがトリガーされ、これまでのところ問題が解決したことを確認できます。

バックグラウンド操作やスレッド操作は使用していません。制御が未完成でエラーなしでプログラムに戻されていることに驚いています。これは既知の問題ですか?

私は他の movefile オプションをテストしていません。もちろん、いつでもコピーして削除することができたので、大したことではありませんが、私を捕まえました。

4

1 に答える 1

2

System.IO.File.Moveメソッドで同じルールに従っていると思います。そのためのコメントでは、次のように述べています。

ディスク ボリューム間でファイルを移動しようとして、そのファイルが使用中の場合、ファイルは移動先にコピーされますが、移動元からは削除されません。

特に何らかの種類のファイル スキャン (ウイルス対策など) が実行されている場合は、I/O に何らかの遅延が発生する可能性があります。

于 2016-04-05T22:07:44.497 に答える