StorageFile 写入后仍处于锁定状态
StorageFile still locked after writing
我有以下代码来编写 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();
感谢您的建议。
我有以下代码来编写 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();
感谢您的建议。