Если файл открыт другим приложением, а затем я пытаюсь сохранить его через Silverlight SaveDialog, я могу поймать ошибку за исключением, но после этого я получаю эту ошибку.
Строка: 57 Ошибка: необработанная ошибка в приложении Silverlight Код приложения: 4004
Категория: ManagedRuntimeError
Сообщение: System.InvalidOperationException: Эта операция может выполняться только в потоке пользовательского интерфейса.в System.Windows.Hosting.NativeHost.VerifyThread () в System.Windows.SaveFileStream.Dispose (логическое удаление) в System.IO.FileStream.Finalize ()
Я бы предпочел обнаружить, чтофайл открыт, но не может этого сделать.Я пробовал fs.CanWrite, но он возвращает true, даже если файл открыт другим приложением.
РЕДАКТИРОВАТЬ: Здесь - это сообщение на форуме silverlight, которое, кажется, объясняетчто происходит, хотя они думают, что это просто файлы Office.У меня проблема с файлом PDF.
Вот мой код:
public void PDFSaveFile(bool success)
{
// silverlight requires saveFileDialog to be user-initiated,
// so this is called from the OK button of a pop-up window
// ignore success, we only gave an OK option
byte[] fileBytes = doc.ToPDF().ToArray();
PDFClose();
try
{
SaveFileDialog saveFileDlg = new SaveFileDialog();
saveFileDlg.Filter = "PDF files (*.pdf)|*.pdf";
bool? dialogResult = saveFileDlg.ShowDialog();
if (dialogResult == true)
{
using (var fs = saveFileDlg.OpenFile())
{
fs.Write(fileBytes, 0, fileBytes.Length);
fs.Close();
}
}
}
catch (Exception ex)
{
Log.HandleInternalError(string.Format("Unable to save file: {0}",ex.Message));
}
}