【问题标题】:IsolatedStorageFile.GetUserStoreForApplication().AvailableFreeSpace is wrong?IsolatedStorageFile.GetUserStoreForApplication().AvailableFreeSpace 错了?
【发布时间】:2011-12-17 03:09:59
【问题描述】:

我最近遇到了一个问题,将大量数据下载到 WP7 设备上的隔离存储时,下载过程中会丢失大量可用空间。

更具体地说,我在下载前检查了可用空间,比如说 1.8 GB;然后我开始下载,当我达到大约 1.1 GB 时,我收到一个磁盘空间不足的警告弹出窗口,不久之后写入磁盘失败并出现 IOException。

所以有些东西在我的设备(HTC Mozart 7)上占用了大约 700 MB 的空间。这个值在我所有的测试中似乎都是一致的。

此外,IsolatedStorageFile.GetUserStoreForApplication().AvailableFreeSpace 在引发 IOException 后返回接近于零,因此显然是存储已满的情况。

任何其他信息/提示将不胜感激。

谢谢!

【问题讨论】:

  • 您是否将价值与 Zune 告诉您的进行了比较?
  • 我发现 Zune 在这方面非常不准确 - 与设置>关于手机上的屏幕和 AvailableFreeSpace API 属性相比,它们都给出相同的值,zune 关闭了到 600 MB。
  • 额外数据并非来自应用文件夹中的文件。经过多次测试和检查,我得出的结论是,这大约 700 MB 最有可能被系统范围的 HTTP 缓存使用。你们中的任何人在您的设备上观察到同样的行为吗?最重要的是,假设这不能被禁用,有没有人知道确切的值,所以我可以在 mydownload 例程中编写一些预防措施?
  • 听起来很有道理。让我们试着关注一下这个问题。
  • @ClausJørgensen - 这个问题的赏金在 5 小时前到期,宽限期在 19 小时后结束。你找到合适的答案了吗?除了赏金之外,我很想知道我的回答解决了你的问题。

标签: windows-phone-7 isolatedstorage windows-phone-7.1


【解决方案1】:

这绝对是缓存抢占磁盘空间。为了转移如此大量的数据,您应该查看 HTTP 以外的协议,毕竟它最初只是用于网页下载。我个人会关注 ftp,否则您将不得不考虑将数据拆分为更易于管理的块。

【讨论】:

    【解决方案2】:

    您是否使用 HttpWebRequest 来下载文件?如果是这样,请尝试将 HttpWebRequest.AllowReadStreamBuffering 属性设置为 false。默认值为真。

    您应该阅读该属性文档的备注部分,以查看将其设置为 false 是否符合您的应用程序的需求,因为它会影响回调发生的时间。

    【讨论】:

      【解决方案3】:

      我觉得它失败了,因为您已经超过了您可能在 zune 中为您的设备设置的阈值限制。请参考下面的截图。如果发生这种情况,请重新检查该值并重试。另请注意,即使将其设置为 0%,手机仍会保留大约 300-500MB

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多