繁体   English   中英

C#如何在读取流作家/读者之后释放文件

[英]c# How to release a file after read streamwriter / reader

我有一个使用CsvHelper的winform,可以读写。 打开并重新打开它们时,我有几个文件。几次“该进程无法访问文件'D:.csv',因为它正在被另一个进程使用”,因此会出现错误。 无法弄清楚如何修复它。 使用后需要将其关闭,但不知道如何。有人可以帮忙吗?

谢谢

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>(); 


                {
                }
            }
        }
    }

看一下using语句。 它将自动处理关闭流。

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     
}

简短答案:关闭StreamReader / Writer。

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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM