C# win 8应用程序中的FileIO
我必须将我的应用程序事件和异常记录在win 8应用程序文档文件夹中的一个文件中C# win 8应用程序中的FileIO,c#,windows-8,C#,Windows 8,我必须将我的应用程序事件和异常记录在win 8应用程序文档文件夹中的一个文件中 Windows.Storage.StorageFolder localFolder = KnownFolders.DocumentsLibrary; 问题是,当我一个接一个地调用WriteToFile函数时,会出现访问被拒绝异常,因为该文件仍在使用中。 有没有办法让这一切顺利 public async void WriteToFile(string log) {
Windows.Storage.StorageFolder localFolder = KnownFolders.DocumentsLibrary;
问题是,当我一个接一个地调用WriteToFile函数时,会出现访问被拒绝异常,因为该文件仍在使用中。
有没有办法让这一切顺利
public async void WriteToFile(string log)
{
try
{
StorageFile sampleFile = await localFolder.CreateFileAsync("dataFile.txt", CreationCollisionOption.OpenIfExists);
//StorageFile sampleFile = await localFolder.GetFileAsync("dataFile.txt");
IRandomAccessStream writeStream = await sampleFile.OpenAsync(FileAccessMode.ReadWrite);
IOutputStream outputStream = writeStream.GetOutputStreamAt(writeStream.Size);
DataWriter dataWriter = new DataWriter(outputStream);
dataWriter.WriteString(log);
dataWriter.StoreAsync().AsTask().Wait();
outputStream.FlushAsync().AsTask().Wait();
}
finally
{
}
}
看起来您在写操作后忘记关闭流。 文件将被锁定,直到您关闭流
dataWriter.Close();
或者像这样使用“using”关键字:
using(DataWriter dataWriter = new DataWriter(outputStream))
{
dataWriter.WriteString(log);
dataWriter.StoreAsync().AsTask().Wait();
}
检查文件是否已锁定是一个好主意,这样您就不会出现异常
您好,希望有帮助您可以尝试以下方法
dataWriter.Dispose();
await outputStream.FlushAsync();
await stream.FlushAsync();
我试过了,但还是一样,我想需要把所有的任务排成队列。是的,对文件的并行访问很复杂。使用串行访问更容易:)尝试了这个,但仍然是一样的,我想需要将所有任务排队。