File.Create()之后"另一个进程正在使用文件"

Bra*_*don 7 .net vb.net io stringwriter

我有一个应用程序,如果该文件尚不存在,则会创建一个文本文件,然后向其写入内容.当我创建并立即写入文件时,它第一次工作得很好.我的问题是,下次执行此代码并且文件已经创建时,它会在我尝试写入文件时抛出异常.我得到"文件被另一个进程使用"错误.

所以我创建它之后似乎需要关闭文件?我不知道怎么做,但它可能非常简单.我会发布一些代码,但它不是必需的,我只是使用一个香草味的字符串构建器和流编写器.

    Private Sub createFileLocations()
        If Not Directory.Exists("./Path") Then
            Directory.CreateDirectory("./Path")
        End If
        If clsGeneralSettings.Printer1 IsNot Nothing Then
            If Not File.Exists("./Path/File1" & ".txt") Then
                File.Create("./Path/File1" & ".txt")
            End If
        End If
    End Sub


Private Sub AppendTextFile(randomId As String, PrintDate As Date, PrintName As String)
    Try
        Dim _stringBuilder As StringBuilder = New StringBuilder
        Dim _StreamWriter As StreamWriter
        Dim fileName As String
        If PrintName = clsGeneralSettings.Printer1 Then
            fileName = "./Path/File1" & ".txt"
            qPrinter1.Enqueue(randomId)
            If qPrinter1.Count > 10 Then
                qPrinter1.Dequeue()
            End If
             _stringBuilder.AppendLine(PrintDate + " | " + randomId)
            _StreamWriter = New StreamWriter(fileName, True)
        End If
        'Todo: Figure this out

        Using _StreamWriter
            _StreamWriter.Write(_stringBuilder.ToString)
            _StreamWriter.Flush()
            _StreamWriter.Close()
            _stringBuilder.Clear()
        End Using
    Catch ex As Exception
    End Try
End Sub
Run Code Online (Sandbox Code Playgroud)

Jeh*_*hof 14

有问题的代码/行就是这个

If Not File.Exists("./PalletQueue/Printer1" & ".txt") Then
  File.Create("./PalletQueue/Printer1" & ".txt")
End If
Run Code Online (Sandbox Code Playgroud)

如果您想稍后写入该文件,File.Create将返回您需要关闭的FileStream.将代码更改为以下内容可以解决您的问题.

If Not File.Exists("./PalletQueue/Printer1" & ".txt") Then
  Dim file as FileStream = File.Create("./PalletQueue/Printer1" & ".txt")
  file.Close()
End If
Run Code Online (Sandbox Code Playgroud)