2017-10-08 7 views
-1

これは本当の頭のスクラッチャーです。すべての文書によれば、完了後に読み取っているファイルは、file.readAllLinesで閉じるべきです。しかし、私のアプリでは、ファイルに書き込もうとすると、「プロセスが別のプロセスで使用されているため、ファイルにアクセスできません」というIO例外がスローされます。そして、これは本当にシンプルでなければなりません。問題のファイルは、最初に起動したときにアプリに読み込まれた後、上書きされたときに2回しか参照されません。ここでは、コードです:まずVB 2012 - StreamReader not closed

、ファイルを開くコード(ファイルパスに使用されc:\Test\cfg.fcs):

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 

それは完璧に動作し、右、適切に閉じたファイルを残す必要がありますか?しかし、次のモジュールを別のモジュールで後で実行すると、ファイルがまだ使用中であるという例外がスローされます。それらはファイル全体が言及されている唯一の2回です。

+0

最初のメソッドを呼び出さずに、最後の2行を含むコードの少なくとも2倍_を呼び出すとどうなりますか? – Steve

+0

OpenTextFileWriterで開いたファイルストリームを閉じましたか? –

答えて

0

この問題に遭遇した他の誰にとっても、解決策は単純でしたが、直観に反するものでした...問題はコマンドのシーケンスだけでした。私は、file.writelineを、それを固定した何らかの理由で、サブディレクトリの一番下に移動しました。 strange

+1

それはタイミングの問題です。おそらくあなたが気づいていないあなたのプログラムの別の部分](https://stackoverflow.com/a/31966611/11683)または[ウイルス対策](https://stackoverflow.com/questions/31950107/file-readalllines-quickly-followed-by-file-writealllines-causes-exception-du#comment51809843_31950107)。 – GSerg