vb.net Windows服务 - 删除文件但被另一个进程

时间:2015-08-20 14:41:47

标签: .net vb.net

我有一个将文件传输到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

1 个答案:

答案 0 :(得分:0)

当我上次编写这样的代码时,结果证明是反病毒造成了麻烦,但它也可能是索引服务。

作为一种解决方法,我最终编写了反复尝试删除的代码。我在数据库中存储了我未能删除的文件列表,所以当我重新启动等时,我重新尝试删除(我想我尝试了10次升级超时,即10,30秒,然后是多分钟)

要想出导致问题的“内容”,您可以使用sysinternals ProcMon查找CreateFile,如果我没记错,您也可以使用过滤器,这样您只能看到您感兴趣的路径。