Windows 8中的StorageFile访问被拒绝异常
作者:互联网
我有一个Metro风格的应用程序,它每X秒轮询一次存储在独立存储中的文件(这是对StorageFile对象的引用).
它是一个PDF文件,在我的应用程序中,我允许用户打开文档并使用本机Reader应用程序对文档进行更改.
我的问题是,当我轮询文档时,我在StorageFile上调用OpenStreamForReadAsync,但是如果您在用户将对文档所做的更改保存在Reader应用程序中的确切时间执行此操作,则会引发访问被拒绝的异常.
我假设这是因为Windows正在写入文件,这很好,我只需要知道如何查询本地StorageFile引用以查看是否可以打开它. (理想情况下,无需调用try catch中包装的OpenStreamForReadAsync).
解决方法:
Windows团队会告诉您进行“尝试/捕获”操作.当我要求File.Exists()API时,他们就是这么告诉我的.
原因是:假设您要查找的API已经存在…如果在调用该API与尝试打开该文件之间的毫秒时间内打开/删除/重命名该文件会发生什么情况?繁荣!您又回到了原始异常,并且需要进行一次try / catch以避免难以重现的崩溃.因此,由于您仍然需要捕获此异常,因此最好也捕获该异常.通过不提供File.Exists或所需的API,它们迫使我们捕获异常,因此用户不会遇到这些罕见的竞争条件错误.
标签:windows-8,storagefile,c 来源: https://codeday.me/bug/20191101/1981358.html