Есть ли способ получить доступное дисковое пространство в Silverlight? - PullRequest
3 голосов
/ 21 декабря 2011

В настоящее время я пытаюсь определить доступное дисковое пространство из моего приложения Silverlight.

Мое приложение может загружать много данных (видеофайлов), и, очевидно, это может завершиться ошибкой, если на диске нет места. Я знаю, что могу перехватывать исключения при записи, но это не приведет к удобству работы с пользователем, поскольку информация поступит слишком поздно и приведет к бесполезным ожиданиям.

В обычном .NET я использовал бы DriveInfo (см. Как получить информацию о диске в C #? для примера), но этот класс отсутствует в Silverlight 5, даже в режиме повышенного доверия.

Итак, есть ли способ определить доступное пространство на диске в Silverlight?


Обновление:

  • У меня все в порядке с повышенными привилегиями для моего приложения.
  • У меня тоже все в порядке с решениями Silverlight 5.
  • Мне нужно что-то, что работает как в Windows, так и в Mac OS, поэтому взаимодействие с PInvoke / COM не вариант.

Ответы [ 2 ]

1 голос
/ 21 декабря 2011

Существовали демоверсии файлового браузера, написанные на Silverlight, но они будут работать с повышенным доверием.

Это означает, что вам придется сразу же подозревать пользователя в вашем приложении при первом его запуске.

Вероятно, для пользователя удобнее всего иметь хорошо сформулированное сообщение об ошибке, когда у пользователя заканчивается свободное место.

Другой вариант - попытаться увеличить квоту изолированного хранилища на размер самого большого доступного видео.

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

Затем, если это не удастся, просто дайте пользователюзнать, что больше места для приложения не может быть выделено, если ему может потребоваться удалить старые видео.

0 голосов
/ 02 января 2012

Я добавляю свой ответ сюда, чтобы подытожить мои открытия:

TL / DR: В Silverlight 5, кросс-платформенном (Windows / Mac OS), нет простого способа получить доступное дисковое пространство.

  • Нельзя получить доступное дисковое пространство при стандартных вызовах Silverlight. DriveInfo отсутствует в Silverlight 5, повышенные привилегии здесь не учитываются.
  • Квота бесполезна для такого рода проблем, она не учитывает доступное дисковое пространство.
  • Существуют обходные пути только для Windows, требующие повышенного доверия с использованием P / Invoke в Win32.
  • Подробную поддержку файловой системы см. В этой статье: http://www.codeproject.com/KB/silverlight/FileExplorerInSilverlight.aspx
  • Резервный вариант заключается в проверке исключений при записи файлов и предоставлении пользователю сообщения во время написания. Люди также предложили предварительно записать файл в начале загрузки, чтобы обеспечить достаточно места на диске.
...