2017-03-11 6 views
0

私はCsvHelperを使用してwinformを持っています。私はいくつかのファイルを開いて再オープンすると、数回後にエラーが出るでしょう "プロセスはファイル 'D:.csv'にアクセスできません。別のプロセスで使用されているためです。 それを修正する方法を理解する。彼らは使用後に閉鎖する必要がありますがhow.Can誰も助けてくれる?c#ストリームライター/リーダーを読み込んだ後でファイルを解放する方法

おかげ

private void btnRead_Click(object sender, EventArgs e) 
    { 
     using (OpenFileDialog ofd = new OpenFileDialog() { Filter = "CSV|*.csv", ValidateNames = true }) 
     { 
      if (ofd.ShowDialog() == DialogResult.OK) 
      { 

        var sr = new StreamReader(new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.None)); 
        var csv = new CsvReader(sr); 
        lunchBindingSource.DataSource = csv.GetRecords<Lunch>().ToString(); 
        lunchBindingSource.DataSource = csv.GetRecords<Lunch>(); 


       { 
       } 
      } 
     } 
    } 

答えて

3

usingをご覧ください。ストリームのクローズを自動的に処理します。

0

短い答え:StreamReaderを/ライターを閉じます。

var sr = new StreamReader(new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.None)); 
var csv = new CsvReader(sr); 
lunchBindingSource.DataSource = csv.GetRecords<Lunch>(); 
sr.Close(); 
+1

このルートを終了する場合は、最後にtryを使用する必要があります。 –

1

FileStreamをusingブロックに入れると、終了するとスコープ外になります。

using(var fs = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.None)) 
{ 
    var sr = new StreamReader(fs); 
    var csv = new CsvReader(sr); 
    //blah blah  
} 
+0

これは簡単でした。助けてくれてありがとう – Booney440

関連する問題