У меня есть небольшой фрагмент кода, который, кажется, является примером из учебника по сохранению файлов из 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()
.С какой стати этот файл автоматически удаляется при закрытии потока?
Заранее спасибо за помощь!