データベースに、あらゆる種類のファイルを格納するテーブルがあります。
ファイル名は ListView に表示され、ユーザーがそのうちの 1 つをクリックすると、ファイル拡張子に基づいて登録されたアプリケーションによって開かれます。
これはコードです:
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();