gpt4 book ai didi

c# - 如何处理 StorageFile 操作的并发?

转载 作者:太空宇宙 更新时间:2023-11-03 18:37:56 24 4
gpt4 key购买 nike

我正在尝试写入一个文件,但“偶尔”我遇到了我认为归结为并发性的问题,因为有些的时候,我得到了一个系统.UnauthorizedAccessException 消息:

Access is denied. (Exception from 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();
}
}

我只能假设这取决于某种并发性,或者它仍然可以在其他地方读取,但我似乎找不到等待它可用的方法 - 我通常会 在它周围锁定,但是 await 不允许这样做,那么其他选项是什么?

最佳答案

通常,您只是在上一个操作完成后才开始下一个操作。

提示:避免async void;使用 async Task 代替。这使您能够知道上一个操作何时完成。

关于c# - 如何处理 StorageFile 操作的并发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12697178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com