Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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
Windows phone 7 隔离存储文件流异常_Windows Phone 7_Isolatedstorage - Fatal编程技术网

Windows phone 7 隔离存储文件流异常

Windows phone 7 隔离存储文件流异常,windows-phone-7,isolatedstorage,Windows Phone 7,Isolatedstorage,我在点击按钮时从Internet异步读取文件,并将其写入txt文件。我总是在点击按钮时检查文件是否存在。如果文件不存在,我使用一个函数来下载它,然后调用函数来读取文件。 问题是我通常在IsoaltedStorageFileStream异常上获取不允许的操作。我从代码中删除了用于读取的函数,只调用了写入函数,然后在没有任何异常的情况下运行程序。然后我再次编写用于读取的函数,它就工作了。 为什么第一种方法不起作用?问题在于对文件的访问。如果您的异步操作打开了该文件,而该文件仍在写入,则您希望从中读取

我在点击按钮时从Internet异步读取文件,并将其写入txt文件。我总是在点击按钮时检查文件是否存在。如果文件不存在,我使用一个函数来下载它,然后调用函数来读取文件。 问题是我通常在IsoaltedStorageFileStream异常上获取不允许的操作。我从代码中删除了用于读取的函数,只调用了写入函数,然后在没有任何异常的情况下运行程序。然后我再次编写用于读取的函数,它就工作了。
为什么第一种方法不起作用?

问题在于对文件的访问。如果您的异步操作打开了该文件,而该文件仍在写入,则您希望从中读取该文件。这是并发性问题。在逻辑中添加某种类型的锁定,即使是一个简单的布尔标志也足够了

private canRead = false;
当应用程序完成读取时,将其设置为true。然后在你的阅读逻辑中

if(canRead)
{
     //read file
}

另一个选项是隐藏按钮并在下载完成时显示。

锁定文件读/写可能重复的