【发布时间】:2022-01-19 09:04:13
【问题描述】:
我有以下代码来编写一个 CSV 文件:
public static async Task WriteCSVFile(StorageFile file, List<string>[] data)
{
using (IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
var outputStream = stream.GetOutputStreamAt(0);
var dataWriter = new DataWriter(outputStream)
{
UnicodeEncoding = UnicodeEncoding.Utf8
};
for (int x = 0; x < data[0].Count; x++)
{
for (int i = 0; i < data.Count(); i++)
{
dataWriter.WriteString(data[i][x]);
dataWriter.WriteString(System.Globalization.CultureInfo.CurrentCulture.TextInfo.ListSeparator);
}
dataWriter.WriteString(Environment.NewLine);
}
await dataWriter.StoreAsync();
await outputStream.FlushAsync();
}
}
这很好,但是当我尝试在应用程序仍在运行时打开写入的文件时,它被锁定了。
某些东西仍在使用部分之外锁定文件。 你有什么技巧可以解决这个问题吗?
【问题讨论】:
-
你确定
WriteCSVFile()返回的任务已经完成了吗? -
正如@MatthewWatson 所说,代码看起来是正确的;所以我唯一能想到的就是任务还没有完成。
-
这个函数被另一个作为任务运行的函数调用,它被等待并没有错误地完成。我是否必须强制结束此任务才能释放文件?
-
DataWriter 也需要处理。