Необработанное исключение при сохранении в уже открытый файл в Silverlight - PullRequest
3 голосов
/ 03 мая 2011

Я пытаюсь написать логику для сохранения файла на локальный диск в Silverlight 4.0.Я использую класс SaveFileDialog для этого.Работает нормально.Но когда я пытаюсь сохранить файл, который уже открыт для просмотра, я получаю необработанное исключение.Также приложение вылетает сразу.

Аналогичная проблема была с Silverlight 3. Там я избавился от этой проблемы, проглотив исключение, выполнив поиск некоторого SaveFileStream текста в исключениях в событии application_unhandledexception.Я думал, что это будет обработано в Silverlight 4, но сейчас стало еще хуже.Даже обходной путь сейчас не работает.

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

Любая помощь приветствуется.

Обновление: это происходит с файлами Excel и не происходит с файлами TXT.Я думаю, что это произойдет для всех файлов MS Office.

Пост о проблеме на официальном форуме

1 Ответ

1 голос
/ 24 сентября 2011

Могу я спросить, как сохранить файл? Поток очищен, закрыт и правильно утилизирован?

Как в качестве примера (примечание: для этого существует множество альтернативных вариантов):

using (Stream stream = new IsolatedStorageFileStream("somefilename.ext", FileMode.Create, FileAccess.Write, IsolatedStorageFile.GetUserStoreForApplication()))
{
    // Use the stream normally in a TextWriter
    using (TextWriter writer = new StreamWriter(stream, Encoding.UTF8))
    {
        writer.Flush();
        writer.Close();
    }

    stream.Close();
}

Надеюсь, что это поможет и поможет: -)

...