我的数据库中有一个存储各种文件的表。
文件名显示在 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。
知道出了什么问题吗?
TIA
编辑:
异常被抛出
p.WaitForExit();