Vb.net 进程无法访问文件“file.csv”,因为另一进程正在使用该文件

Vb.net 进程无法访问文件“file.csv”,因为另一进程正在使用该文件,vb.net,sql-server-2008,csv,Vb.net,Sql Server 2008,Csv,我有一个代码,它处理文件夹中的每个文件,并将文件中的数据发送到SQL数据库,然后删除该文件。但我经常会遇到这样的异常情况,进程无法访问文件“file.csv”,因为它正被另一个进程使用。请任何人给我指出正确的方向,我会非常感激的 代码如下所示: Dim dirinfo As DirectoryInfo Dim allFiles() As FileInfo dirinfo = New DirectoryInfo("E:\SQLUPDATE\CAC") allFil

我有一个代码,它处理文件夹中的每个文件,并将文件中的数据发送到SQL数据库,然后删除该文件。但我经常会遇到这样的异常情况,进程无法访问文件“file.csv”,因为它正被另一个进程使用。请任何人给我指出正确的方向,我会非常感激的

代码如下所示:

    Dim dirinfo As DirectoryInfo
    Dim allFiles() As FileInfo

    dirinfo = New DirectoryInfo("E:\SQLUPDATE\CAC")
    allFiles = dirinfo.GetFiles("*.csv")
    If allFiles.Length <> 0 Then
        Try
            For Each fl As FileInfo In allFiles
                'MsgBox(fl.FullName.ToString())
                Dim con As SqlConnection = New SqlConnection(SQL_con2)
                Dim sr As StreamReader = New StreamReader(fl.FullName)
                Dim line As String = sr.ReadLine
                Dim value() As String = line.Split(Microsoft.VisualBasic.ChrW(44))
                Dim dt As DataTable = New DataTable
                Dim row As DataRow
                For Each dc As String In value
                    dt.Columns.Add(New DataColumn(dc))
                Next

                While Not sr.EndOfStream
                    value = sr.ReadLine.Split(Microsoft.VisualBasic.ChrW(44))
                    If (value.Length = dt.Columns.Count) Then
                        row = dt.NewRow
                        row.ItemArray = value
                        dt.Rows.Add(row)
                    End If

                End While
                Dim bc As SqlBulkCopy = New SqlBulkCopy(con.ConnectionString, SqlBulkCopyOptions.TableLock)
                bc.DestinationTableName = "[DB].[dbo].[CAC_LData]"
                bc.BatchSize = dt.Rows.Count
                con.Open()
                bc.WriteToServer(dt)
                bc.Close()
                con.Close()
                sr.Close()
                System.IO.File.Delete(fl.FullName)
                sr.Dispose()
            Next
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
    End If

尝试用File.Delete和sr.Dispose替换该行。如果不是这样,那么请告诉我们哪一行生成异常。问题基本上是FTP客户端正在将文件写入此文件夹,同时此函数尝试处理文件,因为到那时,如果FTP客户端尚未完成文件写入,发生冲突时,它读取的文件正常,但当涉及到删除时,它抛出此异常。所以我需要一些检查,看看文件是否由FTP客户端发布,然后继续。