0

StreamReaderスタックオーバーフローでファイルをロックしたりロックしたりしないことに関する多くの情報がありますが、ダイアログボックスはそれを何らかの形で変更しますか? いいえと言わざるを得ませんが、おそらく私はそれを正しく使用しておらず、ファイルをロックしていますか? 私のコードは次のとおりです。

private void read1()
{
    TextReader tr = new StreamReader(@"T:\\testfile");
    string input = null;
    while ((input = tr.ReadLine()) != null)
    {
        if (input.Contains("test"))
        {
            MessageBox.Show(input);
        }
    }

}
4

1 に答える 1

1

そのためには FileStream を使用する必要があると思います。

また、ストリームを閉じたり、Dispose() を呼び出したりしていません。ステートメントを使用して、usingそれが確実に行われるようにする必要があります。次のコードは、ファイルがロックされていないことを確認する必要があります。

private void read1()
{
    using (var fs = new FileStream(@"T:\testfile", FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) {
        using (var tr = new StreamReader(fs)) {
            string input = null;
            while ((input = tr.ReadLine()) != null)
            {
                if (input.Contains("test"))
                {
                    MessageBox.Show(input);
                }
            }
        }
    }    
}
于 2013-08-17T04:19:24.027 に答える