Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# windows 8中的StorageFile访问被拒绝异常_C#_Windows 8_Storagefile - Fatal编程技术网

C# windows 8中的StorageFile访问被拒绝异常

C# windows 8中的StorageFile访问被拒绝异常,c#,windows-8,storagefile,C#,Windows 8,Storagefile,我有一个metro风格的应用程序,它每X秒轮询一个存储在独立存储中的文件(它是对StorageFile对象的引用) 这是一个PDF文件,在我的应用程序中,我允许用户使用本机Reader应用程序打开文档并对文档进行更改 我的问题是,当我轮询文档时,我调用了StorageFile上的OpenStreamForReadAsync,但是如果您在用户在Reader应用程序中保存对文档所做的更改的准确时刻执行此操作,我会引发一个拒绝访问异常 我假设这是因为Windows正在写入该文件,这很好,我只需要知道如

我有一个metro风格的应用程序,它每X秒轮询一个存储在独立存储中的文件(它是对
StorageFile
对象的引用)

这是一个PDF文件,在我的应用程序中,我允许用户使用本机Reader应用程序打开文档并对文档进行更改

我的问题是,当我轮询文档时,我调用了
StorageFile
上的
OpenStreamForReadAsync
,但是如果您在用户在Reader应用程序中保存对文档所做的更改的准确时刻执行此操作,我会引发一个
拒绝访问
异常


我假设这是因为Windows正在写入该文件,这很好,我只需要知道如何查询本地
StorageFile
引用以查看是否允许打开它。(理想情况下,无需调用封装在try-catch中的
OpenStreamForReadAsync

Windows团队会告诉您执行try/catch操作。当我要求一个File.Exists()API时,他们就是这么告诉我的


理由是:假设您正在寻找的API存在。。。如果在调用该API和尝试打开文件之间的毫秒内,文件被打开/删除/重命名,会发生什么情况?繁荣您回到了最初的异常状态,需要执行try/catch以避免难以重现的崩溃。因此,既然您无论如何都需要捕获此异常,那么您也可以捕获该异常。通过不提供File.Exists或您正在寻找的API,他们迫使我们捕获异常,这样用户就不会遇到这些罕见的竞争条件错误。

很公平,我已经实现了,但感觉不对:)