该文件正由另一个进程 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);
我无法弄清楚这段代码的问题是什么。请帮助我。
打开
此行中的文件的是您自己的进程
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();
}
}