Row*_*haw 1 c# microsoft-metro windows-8
我正在尝试写入一个文件,但"偶尔"我遇到了一些我认为属于并发性的问题,因为有些时候,我收到了一条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();
}
}
Run Code Online (Sandbox Code Playgroud)
我只能假设这是一些并发性,或者它仍然可以在其他地方读取,但我似乎无法找到一种等待它可用的方法 - 我通常会lock在它周围,但这是不允许await这样做有什么其他选择?