我有一个将文件传输到Web服务的Windows服务。如果成功,它会尝试删除与此文件相关的所有文档。
这在Windows 2003服务器上非常罕见,但昨晚将其移至Windows 2012 R2服务器(四核)。现在它的发生更频繁。
这是典型的错误。
该进程无法访问该文件&c; \ abc \ 123456.txt'因为它正被另一个进程使用。
有关如何更改此代码的任何建议。我已经考虑过让服务在删除之前暂停一下,但不确定这是否真的是最好的解决方案。
If isReadyToDelete Then
' Delete all of the filing's documents from disk.
For Each doc In Filing.documents
Try
File.Delete(String.Format("{0}\{1}_{2}.{3}", My.Settings.FilingDirectory, Filing.filing.ID, doc.ID, My.Settings.FileExtension))
Catch ex As Exception
ErrorHandler.LogError(ex, _
String.Format("Unable to delete {0}\{1}_{2}.{3}", My.Settings.FilingDirectory, Filing.filing.ID, doc.ID, My.Settings.FileExtension), _
ErrorSeverityLevels.Medium, _
MethodBase.GetCurrentMethod().ReflectedType.FullName, MethodBase.GetCurrentMethod().Name)
End Try
Next
End If
答案 0 :(得分:0)
当我上次编写这样的代码时,结果证明是反病毒造成了麻烦,但它也可能是索引服务。
作为一种解决方法,我最终编写了反复尝试删除的代码。我在数据库中存储了我未能删除的文件列表,所以当我重新启动等时,我重新尝试删除(我想我尝试了10次升级超时,即10,30秒,然后是多分钟)
要想出导致问题的“内容”,您可以使用sysinternals ProcMon查找CreateFile,如果我没记错,您也可以使用过滤器,这样您只能看到您感兴趣的路径。