我正在尝试写入文件,但“偶尔”我遇到了我认为归结为并发的问题,因为有时,我收到一条System.UnauthorizedAccessException
消息:
访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))
...来自以下内容:
public async void SubmitChanges()
{
DataContractSerializer serializer =
new DataContractSerializer(typeof(LocalCache<T>));
StorageFile file = await ApplicationData.Current.LocalFolder
.CreateFileAsync(GetFileNameForType(),
CreationCollisionOption.ReplaceExisting);
//Occasionally throws here
using (var fi = await file.OpenTransactedWriteAsync())
{
serializer.WriteObject(fi.Stream.AsStreamForWrite(), this);
await fi.CommitAsync();
}
}
我只能假设这是由于某种并发性,或者它仍然可以在其他地方读取,但我似乎找不到等待它可用的方法 - 我通常会lock
围绕它,但这是不允许,await
那么其他选项是什么?