2011-12-21 100 views
3

我目前正在尝试从我的Silverlight应用程序中确定可用的磁盘空间。有没有办法在Silverlight中获得可用的磁盘空间?

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

在常规.NET中,我将使用DriveInfo(例如,参见How do I retrieve disk information in C#?),但即使在提升的信任模式下,该类也不存在于Silverlight 5中。

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


更新:

  • 我很好,需要高架权限的我的应用程序。
  • 我也很喜欢Silverlight 5的唯一解决方案。
  • 我需要能够在Windows和Mac OS上运行的东西,所以PInvoke/COM互操作不是一个选项。

回答

0

我在这里将我的回答来总结我的发现:

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

  • 使用标准Silverlight调用无法获得可用的磁盘空间。 Silverlight 5中缺少DriveInfo,这里没有提到特权提升。
  • 配额对于这类问题没有用处,它没有考虑可用的磁盘空间。
  • 只有Windows有解决方法,需要提升信任,使用P/Invoke进入Win32。
  • 对于文件系统的更详细的支持,看到这篇文章:http://www.codeproject.com/KB/silverlight/FileExplorerInSilverlight.aspx
  • 的回落是写入文件时检查异常并在写作时的消息呈现给用户。人们还建议在下载开始时预先写入文件以确保足够的磁盘空间。
1

在Silverlight中已经有filebrowser演示,但它们会以较高的信任度运行。

这意味着当用户第一次运行应用程序时,您将不得不立即对应用程序产生怀疑。

这可能是一个更好的用户体验,当用户用完空间时,只需写出措辞良好的错误消息即可。

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

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

然后当失败只是让用户知道,没有更多的空间可以为应用程序分配了,他可能需要删除旧影片。

+0

我使用提升的信任,我会澄清,我的问题确定。 – jv42 2011-12-21 11:04:14

+0

IsolatedStorage配额(可惜)与可用的实际磁盘空间无关,您可以请求您希望的任何配额,它只是用于请求用户写入该数量的权限。 – jv42 2011-12-21 11:05:00

+1

你可以这样做http://forums.silverlight.net/t/146323.aspx/1但它只会是windows。找到磁盘空间只会是Windows。 – 2011-12-21 11:08:32

相关问题