Vb.net VB 2012-StreamReader未关闭

Vb.net VB 2012-StreamReader未关闭,vb.net,file-io,file.readalllines,Vb.net,File Io,File.readalllines,这真是令人头痛。根据所有文档,file.readAllLines应在完成后关闭正在读取的文件。但在我的应用程序中,当我尝试写入文件时,它抛出一个IO异常,表示“进程无法访问该文件,因为它正被另一个进程使用”。这应该是非常简单的-所讨论的文件只被引用了两次-一次是在第一次启动时读取到应用程序中,然后是在您覆盖它时。代码如下: 首先,打开文件的代码(使用的文件路径是c:\Test\cfg.fcs): 它抛出一个异常,表示该文件仍在使用中。这是整个应用程序中唯一两次提到该文件。对于遇到此问题的其他人,

这真是令人头痛。根据所有文档,
file.readAllLines
应在完成后关闭正在读取的文件。但在我的应用程序中,当我尝试写入文件时,它抛出一个IO异常,表示“进程无法访问该文件,因为它正被另一个进程使用”。这应该是非常简单的-所讨论的文件只被引用了两次-一次是在第一次启动时读取到应用程序中,然后是在您覆盖它时。代码如下:

首先,打开文件的代码(使用的文件路径是
c:\Test\cfg.fcs
):


它抛出一个异常,表示该文件仍在使用中。这是整个应用程序中唯一两次提到该文件。

对于遇到此问题的其他人,解决方案很简单,但仍然违反直觉。。。问题只是命令的顺序。我把file.writeline移到了子文件的底部,出于某种原因,它被修复了。奇怪

如果您不调用第一个方法,而是调用包含最后两行的代码至少两次,会发生什么?您是否关闭了OpenTextFileWriter打开的文件流?那么这是一个时间问题,很可能是由或引起的。
Public Function ReadALine(ByVal File_Path As String, ByVal TotalLine As Integer, ByVal Line2Read As Integer) As String
    Dim Buffer As Array
    Dim Line As String
    If TotalLine <= Line2Read Then
        Return "No Such Line"
    End If
    Buffer = File.ReadAllLines(File_Path)
    Line = Buffer(Line2Read)

    Return Line
End Function
file = My.Computer.FileSystem.OpenTextFileWriter("c:\Test\cfg.fcs", False)
file.WriteLine(Form1.GlobalVariables.serialNumber)