StorageFile在写入后仍处于锁定状态



我有以下代码来编写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();
}
}

这很好,但当我试图在应用程序仍在运行时打开写入的文件时,它被锁定了。

某些东西仍在使用部件之外锁定文件。你有解决这个问题的建议吗?

经过多次变通,我终于在等待任务后通过调用垃圾收集器来修复它。StorageFile似乎没有自己清理。

这是新的呼叫:

await SpreadsheetHelper.WriteCSVFile(fileExport, dataExport);
GC.Collect();

谢谢你的建议。

最新更新