3

我目前正在尝试从我的 Silverlight 应用程序中确定可用的磁盘空间。

我的应用程序可以下载大量数据(视频文件),显然,如果磁盘空间不存在,这可能会失败。我知道我可以在写入时捕获异常,但这不会带来非常用户友好的体验,因为信息来得太晚并导致无用的等待。

在常规的 .NET 中,我将使用DriveInfo(例如,请参阅如何在 C# 中检索磁盘信息?),但该类在 Silverlight 5 中不存在,即使在提升的信任模式下也是如此。

那么,有没有办法在 Silverlight 中确定驱动器上的可用空间?


更新:

  • 我可以为我的申请要求提升权限。
  • 我对 Silverlight 5 only 解决方案也很好。
  • 我需要适用于 Windows 和 Mac OS 的东西,所以 PInvoke/COM 互操作不是一个选项。
4

2 回答 2

1

已经有使用 Silverlight 编写的文件浏览器演示,但它们会以更高的信任度运行。

这意味着您必须在用户第一次运行应用程序时立即让他们怀疑您的应用程序。

当用户空间不足时,仅提供措辞恰当的错误消息可能是一种更好的用户体验。

另一种选择是尝试通过最大可用视频的大小来增加隔离存储配额。

http://msdn.microsoft.com/en-us/library/system.io.isolatedstorage.isolatedstoragefile.increasequotato(v=vs.95).aspx

然后,当失败时,只需让用户知道无法为该应用分配更多空间,因为他可能需要删除较旧的视频。

于 2011-12-21T11:00:34.087 回答
0

我在这里添加我的答案来总结我的发现:

TL/DR:在跨平台(Windows/Mac OS)的 Silverlight 5 中获取可用磁盘空间并不容易。

  • 您无法通过标准 Silverlight 调用获得可用磁盘空间。DriveInfoSilverlight 5 中缺少提升的权限,此处不考虑提升的权限。
  • 配额对于这类问题是无用的,它没有考虑可用磁盘空间。
  • 有仅适用于 Windows 的解决方法,需要提升信任,使用 P/Invoke 进入 Win32。
  • 有关文件系统的详细支持,请参阅这篇文章: http: //www.codeproject.com/KB/silverlight/FileExplorerInSilverlight.aspx
  • 回退是在写入文件时检查异常并在写入时向用户显示消息。人们还建议在下载开始时预先写入文件,以确保有足够的磁盘空间。
于 2012-01-02T15:03:59.343 回答