如果我的代码足够正确,我有一些要求您检查和建议。我的应用程序在文件上工作,有时它通过Windows服务下载多个文件,然后由其他Windows服务解析器进程解析这些文件。不幸的是,在进程文件必须完成下载之前,进程解析器应该打开文件并使用它,因此我准备了一些代码来首先检查文件是否是空闲的 - 意味着不是由另一个进程或某个人打开,无论如何。我使用大多数情况下streamreader打开文件并使用它,但正如我所说,我想首先检查文件,如果它准备好了。
这是我的代码,你怎么看:
Public Shared Function FileInUse(ByVal sFile As String, ByVal log As String) As Boolean
Dim thisFileInUse As Boolean = True
Dim counter As Integer = 0
For i = 0 To 30
counter += 1
If System.IO.File.Exists(sFile) Then
Try
Using f As New IO.FileStream(sFile, FileMode.Open, FileAccess.ReadWrite, FileShare.None)
thisFileInUse = False
Exit For
End Using
Catch
System.Threading.Thread.Sleep(10000) '10 sec
End Try
End If
Next
Return thisFileInUse
End Function