有没有办法在Silverlight中获得可用的磁盘空间?

时间:2011-12-21 10:52:52

标签: silverlight diskspace silverlight-5.0

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

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

在常规.NET中,我将使用DriveInfo(请参阅How do I retrieve disk information in C#?作为示例),但从Silverlight 5开始,该类不存在,即使在提升信任模式下也是如此。

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


更新:

  • 我很高兴要求提升应用程序的提升权限。
  • 我也只使用Silverlight 5解决方案。
  • 我需要适用于Windows和Mac OS的东西,因此不能选择PInvoke / COM互操作。

2 个答案:

答案 0 :(得分:1)

有一些用Silverlight编写的文件浏览器演示,但它们会以提升的信任运行。

这意味着您必须在首次运行时立即让用户对您的应用程序产生怀疑。

当用户用完空间时,只有一个措辞好的错误消息可能是更好的用户体验。

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

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

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

答案 1 :(得分:0)

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

TL / DR:没有简单的方法可以获得跨平台的Silverlight 5(Windows / Mac OS)中的可用磁盘空间。

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