该文件正由另一个进程 SaveFileDialog 使用

本文关键字:进程 SaveFileDialog 使用 另一个 文件 | 更新日期: 2023-09-27 17:57:24

我正在使用 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);我无法弄清楚这段代码的问题是什么。请帮助我。

该文件正由另一个进程 SaveFileDialog 使用

打开

此行中的文件的是您自己的进程

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