vb.net IO.StreamWriter仅在调试模式下工作

vb.net IO.StreamWriter仅在调试模式下工作,vb.net,Vb.net,它在调试模式下工作得很好,但当我运行构建的进程并按下保存按钮时,它会出现“进程无法访问该文件,因为它正被另一个进程使用”的未处理异常错误(加载后不会保存)。 有什么建议吗 Imports System.IO Public Class DL1 Function DirExists(ByVal DirName As String) As Boolean On Error GoTo ErrorHandler DirExists = GetAttr(DirNam

它在调试模式下工作得很好,但当我运行构建的进程并按下保存按钮时,它会出现“进程无法访问该文件,因为它正被另一个进程使用”的未处理异常错误(加载后不会保存)。 有什么建议吗

Imports System.IO
Public Class DL1

    Function DirExists(ByVal DirName As String) As Boolean
        On Error GoTo ErrorHandler
        DirExists = GetAttr(DirName) And vbDirectory
ErrorHandler:
    End Function
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

    Private Sub LoadGlink_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LoadGlink.Click

        GlinkList.Items.Clear()



        Dim fileReader As System.IO.StreamReader
        fileReader = _
        My.Computer.FileSystem.OpenTextFileReader("c:\Source\DL1\Glink.txt")

        Dim mystring() As String = fileReader.ReadToEnd.Split(vbNewLine)


        GlinkList.Items.AddRange(mystring)

        fileReader.Close()

        Me.Controls("Glinklist").Focus()
    End Sub

    Private Sub linktochrome_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles linktochrome.Click
        If GlinkList.SelectedItem IsNot Nothing Then
            ' selected item is sglink
            Dim sglink = GlinkList.SelectedItem.ToString


            Process.Start("C:\Users\1\AppData\Local\Google\Chrome\Application\chrome.exe", sglink)
        End If
        Me.Controls("Glinklist").Focus()

    End Sub

    Private Sub movetofol_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles movetofol.Click



        Dim strDir As String
        strDir = "C:\Users\1\Downloads\Glink\" & "\" & SFoltext.Text
        If DirExists(Trim(strDir)) = False Then
            MkDir(Trim(strDir))
        End If


        For Each f As String In Sresult1.Items
            Dim f_name As String = Path.GetFileName(f)
            My.Computer.FileSystem.MoveFile(f, strDir & "\" & f_name)
        Next
        Sresult1.Items.Clear()

        GlinkList.Items.Remove(GlinkList.SelectedItem)


    End Sub

    Private Sub ChecKDL_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ChecKDL.Click

        Sresult1.Items.Clear()
        Dim fileList As System.Collections.ObjectModel.ReadOnlyCollection(Of String)
        fileList = My.Computer.FileSystem.GetFiles("C:\Users\1\Downloads\")


        For Each foundFile As String In fileList
            Sresult1.Items.Add(foundFile)
        Next

    End Sub

    Private Sub Bsave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bsave.Click
        Dim i As Integer


        'Saves Glinklist
        Dim path As String = System.IO.Path.Combine("c:\Source\DL1\", "Glink.txt")
        Using fs As New System.IO.FileStream(path, IO.FileMode.Create)

            Using w As IO.StreamWriter = New IO.StreamWriter(fs)
                For i = 0 To GlinkList.Items.Count - 1
                    w.WriteLine(GlinkList.Items.Item(i))
                Next
                w.Close()
            End Using
        End Using
    End Sub

    Private Sub RMselec_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RMselec.Click
        GlinkList.Items.Remove(GlinkList.SelectedItem)
        Me.Controls("Glinklist").Focus()
    End Sub
End Class

通常这意味着权限问题。尝试以管理员身份运行VisualStudio以消除这种可能性

不确定这是否是答案,但我将在这里发布,因为我可以更好地格式化代码。
如果有什么变化,请告诉我

将您的阅读功能更改为

Using fileReader = _
    My.Computer.FileSystem.OpenTextFileReader("c:\Source\DL1\Glink.txt")
    Dim mystring() = fileReader.ReadToEnd.Split(vbNewLine)
    GlinkList.Items.AddRange(mystring)
End Using
或者干脆

    Dim mystring() = File.ReadAllLines()
    GlinkList.Items.AddRange(mystring)

当我在VisualStudio中运行它时,它工作得很好。当我将它构建到DL1.exe并运行它时,它不起作用。当我单击“加载文本文件”然后保存它时,它崩溃了。我试过你的建议。遗憾的是,它不起作用。没有答案,但你知道吗?可能首选手动打开/拆分文件。使用fileReader=\uMy.Computer.FileSystem.OpenTextFileReader(“c:\Source\DL1\Glink.txt”)Dim mystring()=file.ReadAllLine()GlinkList.Items.AddRange(mystring)结束时使用“ReadAllLine不是System.IO.file的成员”。它说+1是为了让人们注意到这一点,但是OP使用
fileReader.Close()
。File.ReadAllLines()是File类的静态方法。您不需要StreamReader。第二个示例是在ReadAllLinesreadalllines上使用blockFixed打字错误(“c:\Source\DL1\glink.txt”)的替代方法,该方法简单得多。非常感谢。然而,我尝试了他们两个,但他们给出了相同的错误。