2

私のvb.netコードでは、ストリームライターを使用して、フォームへの入力として与えられたファイルに書き込みます。

 Dim strContents As String
        Dim objReader As StreamReader
        Try

            objReader = New StreamReader("C:\test.txt")
            strContents = objReader.ReadToEnd()
            objReader.Close()

        Catch Ex As Exception

        End Try
        Dim Contents As String
        Dim bAns As Boolean = False
        Dim objWriter As StreamWriter
        Dim FileStream As System.IO.FileStream
        Try

            FileStream = New FileStream("C:\test.txt", FileMode.Open, FileAccess.ReadWrite)

            objWriter = New StreamWriter("C:\test.txt")
            objWriter.Write("fdgdfgdjkljljklg")
            objWriter.Close()
            bAns = True
        Catch Ex As Exception


        End Try

一部のシステムでは正常に動作しますが、他の一部のワークステーションでは、件名に記載されているエラーが表示されます。

ここでファイルへのアクセスを制限しているものは何ですか? 誰でもこれについて私を助けることができますか?

4

1 に答える 1

2

ここでファイルへのアクセスを制限するものは何ですか?

ストリームを破棄していないため、プロセスがファイルをロックしているという事実。AStreamWriterはファイルへのアンマネージハンドルを保持しています。このハンドルを破棄しないと、他のスレッド/プロセスはファイルを開くことができません。

IDisposable適切な廃棄を確実にするために、常にリソースをUsingステートメントでラップすることをお勧めします(例外がブロック内でスローされた場合でも)。

Using filestream As New StreamWriter(Inifile, True, System.Text.Encoding.UTF8)
    ' ... use the filestream here to write to the file
End Using 
于 2012-06-14T11:08:41.020 に答える