我試圖寫一個文件,但「偶爾」我碰上,我認爲是到併發問題,如的一些時間,我越來越有消息System.UnauthorizedAccessException
:如何處理StorageFile操作的併發性?
訪問被拒絕。 (異常來自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
所以有什麼其他的選擇?
如果這是一個併發問題,你需要鎖定你可能使用SemaphoreSlim.WaitAsync()http://msdn.microsoft.com/en-us/library/hh462788.aspx – Gavin
@mydogisbox這段代碼是用於*保存* –