내가 파일에 기록하지만, "가끔"나는 시간의 일부, 나는이 메시지와 함께 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이 코드는 * * –