У меня есть таблица в моей базе данных, в которой хранятся все типы файлов.
Имена файлов отображаются в ListView, и когда пользователь щелкает одно из них, оно открывается зарегистрированным приложением на основе расширения файла.
Это код:
if (listViewArchivos.HasItems)
{
dynamic result = listViewArchivos.SelectedItem;
var nombre = Path.GetTempPath() + admin.buscarNombreArchivo((int)result.Id);
var bytes = admin.buscarArchivo((int)result.Id);
try
{
using (var writer = new BinaryWriter(File.Open(nombre, FileMode.Create)))
{
writer.Write(bytes);
}
var p = Process.Start(nombre);
p.WaitForExit();
}
catch (Exception exc)
{
InterfazUtil.error(exc.Message); // This shows a MessageBox
}
finally
{
File.Delete(nombre);
}
}
Он отлично работает для docx, pdf, txt и т. д. Но когда я пытаюсь открыть изображение, файл успешно открывается с помощью Window Photo Viewer (Windows 7), но выдается исключение NullReferenceException.
Если я сначала закрою WPV, а затем MessageBox, файл будет удален из временной папки.
Если я сначала закрою MessageBox, то изображение исчезнет из WPV, и после того, как я закрою WPV, файл не будет удален из временной папки.
Теперь, если я удалю блок catch, WPV успешно откроет файл, и после его закрытия файл не будет удален из временной папки. Очевидно, что приложение падает, потому что исключение не управляется.
Похоже, проблема в WPV.
Есть идеи, что не так?
ТИА
РЕДАКТИРОВАТЬ:
Исключение выбрасывается в
p.WaitForExit();
NullReferenceException
? Что такое null... какая строка кода его выдает? - person DonBoitnott   schedule 21.06.2013p
отStart()
. Это правильно? - person DonBoitnott   schedule 21.06.2013