Silverlight SaveFileStream тихо терпит неудачу - PullRequest
1 голос
/ 08 марта 2011

У меня есть небольшой фрагмент кода, который, кажется, является примером из учебника по сохранению файлов из Silverlight 4.0, но, похоже, он не работает.

Следующий фрагмент кода взят из обработчика нажатия кнопки:

var saveDialog = new SaveFileDialog() { Filter = "All Files(*.*)|*.*" };

if (saveDialog.ShowDialog() == true)
{
    using (var stream = saveDialog.OpenFile())
    using (var writer = new StreamWriter(stream))
    {
        writer.WriteLine("Hello, World!");
        writer.Flush();
        writer.Close();
    }
}

Я пытался сохранить файл во многих разных местах, все с одинаковым поведением:

  • Кажется, что SaveFileDialog работает нормально.
  • SaveFileStream (из отладчика) ведет себя нормально.
  • После вызова writer.Flush(), BaseStream переходит в положение 15.
  • Нет исключений.
  • После выполнения блока я не могу найти файл с помощью проводника Windows.

Мне кажется, что код слишком прост для сбоя в обычных условиях.Так что это приводит к моему вопросу: что не так с моими обстоятельствами?Почему сохранение завершается успешно, а файл нигде не найден?Настройки безопасности?Сам код?Я в растерянности.

Обновление

Я перепробовал еще несколько вещей, но все еще не повезло.Я запустил приложение вне браузера с теми же симптомами, повысив SaveFileDialog до переменной класса.Приложение ведет себя так, как будто ошибки нет, но в папке сохранения не отображается файл (папка «Мои документы» в Vista).

График утолщается

Я шелчерез отладчик и обнаружил дополнительное странное поведение.После вызова saveDialog.OpenFile() файл появляется в целевом местоположении.Он остается после каждого оператора, но удаляется после вызова writer.Close().С какой стати этот файл автоматически удаляется при закрытии потока?

Заранее спасибо за помощь!

...