【发布时间】:2014-05-12 03:10:09
【问题描述】:
我创建了一个程序,可以将文件移入和移出各种目录。我遇到的一个问题是当您尝试移动文件并且其他一些程序仍在使用它时。你得到一个错误。留下它是没有选择的,所以我只能想着必须一遍又一遍地尝试移动它。这虽然减慢了整个程序的速度,所以我创建了一个新线程并让它处理问题文件并继续下一个。更大的问题是当你有太多这些问题文件并且程序现在有太多线程试图移动这些文件时,它只会因一些 kernel.dll 错误而崩溃。这是我用来移动文件的代码示例:
Public Sub MoveIt()
Try
File.Move(_FileName, _CopyToFileName)
Catch ex As Exception
Threading.Thread.Sleep(5000)
MoveIt()
End Try
End Sub
如您所见,我尝试移动文件,如果出错,我等待并一遍又一遍地移动它。我也尝试过使用FileInfo,但这比使用File 对象要快得多。
那么有没有人找到一种万无一失的方法来移动文件而不会出错?
注意:需要大量文件才能使其崩溃。周末会没事的,但到周一结束时,它就完成了。
更新
到目前为止,我很欣赏所有的想法。也许我应该提供更多关于我在做什么的信息。
这一切都在 Windows 服务中完成。必须移动文件。我没有办法留下任何东西。这就是为什么我必须一遍又一遍地尝试移动这些文件的原因。这些文件用于将数据导入各种数据库。另外,没有用户告诉文件是否无法移动。此外,该程序每天处理数千个文件。
这么说吧。我怎样才能有一个高效的程序,可以在没有任何用户交互的情况下移动文件,并保证所有文件都被移动?创建这些文件的程序最终会放弃对它们的控制。它们由 FTP、Biztalk 和其他各种服务创建。
【问题讨论】:
-
我认为有更好的方法来做任何你想做的事情(在更高的层次上)。
-
联系正在创建这些文件的应用程序的程序员。告诉他们您想要一种移动文件的方法,即使应用程序正在写入文件。确保你不接受NO!求答案!
-
好吧,我怀疑我可以告诉微软.. 或各种 3rd 方 FTP 程序.. 如果有更好的方法来移动和排序文件.. 请告诉我你的想法..
标签: file filesystems .net