Elency Solutions CSV库错误C#

时间:2014-01-27 17:09:28

标签: c# csv load save helper

我正在为C#使用elency solutions CSV库来保存和加载文件中的一些数据。

我的代码正确保存并加载,但是当我加载然后尝试保存错误时,说另一个进程正在使用该文件。

加载方法是:

private void loadfile(string name)
{
    int key = 696969;
    CsvReader read = new CsvReader("data.csv");

    try
    {
        do
        {
            read.ReadNextRecord();
        } while (name != read.Fields[0]);
        int decAgain = int.Parse(read.Fields[1], System.Globalization.NumberStyles.HexNumber); //convert to int
        int dec = decAgain ^ key;
        MessageBox.Show(dec.ToString());

    }
    catch (Exception)
    {
        MessageBox.Show("Not Found");
    }
        read = null;

}

如您所见,我有点处理“读取”对象。

以下是保存方法:

private void savefile(string encrypted, string name)
{
    CsvFile file = new CsvFile();
    CsvRecord rec = new CsvRecord();
    CsvWriter write = new CsvWriter();

    rec.Fields.Add(name);
    rec.Fields.Add(encrypted);

    file.Records.Add(rec);
    write.AppendCsv(file, "data.csv");

    file = null;
    rec = null;
    write = null;

}

它总是卡在附加csv上。 我明白这个问题。读者未成功关闭。如何正确关闭文件?

注意:我已经尝试了read.Dispose(),但它无效。

你能帮帮我吗?

此致

1 个答案:

答案 0 :(得分:0)

使用use自动处理对象。它可以解决您的问题。

private void savefile(string encrypted, string name)
{
    using(CsvFile file = new CsvFile())
    {
        using(CsvRecord rec = new CsvRecord())
        {
            using(CsvWriter write = new CsvWriter())
            {

                rec.Fields.Add(name);
                rec.Fields.Add(encrypted);

                file.Records.Add(rec);
                write.AppendCsv(file, "data.csv");
            }
        }
    }
}