0

我正在使用 LinqToCSV 导出 C# 中的值列表,当我只使用两行作为

        LINQtoCSV.CsvContext CSVContext = new CsvContext();
        CSVContext.Write(bullishRowList, "C://FileName.CSV");

但我想使用 SaveFileDialog 来允许用户选择他想要保存文件的位置。为此,我做了以下事情。我从这里拿了这段代码

        Stream myStream;
        SaveFileDialog saveFileDialog1 = new SaveFileDialog();

        saveFileDialog1.Filter = "csv files (*.csv)|*.csv";
        saveFileDialog1.FilterIndex = 2;
        saveFileDialog1.RestoreDirectory = true;

        if (saveFileDialog1.ShowDialog() == DialogResult.OK)
        {
            if ((myStream = saveFileDialog1.OpenFile()) != null)
            {
                LINQtoCSV.CsvContext CSVContext = new CsvContext();
                CSVContext.Write(bullishRowList, saveFileDialog1.FileName);
                myStream.Close();
            }
        }

它给出了一个错误“该进程无法访问文件'C:\ aaa',因为它正在被另一个进程使用”在线CSVContext.Write(bullishRowList, saveFileDialog1.FileName);我无法弄清楚这段代码有什么问题。请帮我。

4

1 回答 1

1

在这一行打开文件是你自己的进程

    if ((myStream = saveFileDialog1.OpenFile()) != null)

并且那条线是不必要的

    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
    {
        if (saveFileDialog1.FileName != string.Empty)
        {
            LINQtoCSV.CsvContext CSVContext = new CsvContext();
            CSVContext.Write(bullishRowList, saveFileDialog1.FileName);
        }
    }

我从未使用过该库,但简要查看他们的文档,如果您想自己打开流,则需要将打开的流传递给 Write 方法

    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
    {
        if ((myStream = saveFileDialog1.OpenFile()) != null)
        {
            LINQtoCSV.CsvContext CSVContext = new CsvContext();
            CSVContext.Write(bullishRowList, myStream);
            myStream.Close();
        }
    }
于 2014-04-08T08:06:00.500 回答