.Netコンソールアプリケーションは、非常に予測できない方法で時々クラッシュする傾向があるCOMオブジェクトに依存しています。アプリケーションは、ログなし、例外なし(catch
ブロックがまったく機能しない)、イベントログなし、エラーについて何も発生しなかったなど、理由もなく単に終了します。
ネイティブクラッシュを分離するにはどうすればよいですか?AppDomainアプローチは私を救いますか?
前もって感謝します!
RuntimeCompatibilityAttribute.WrapNonExceptionThrowsを試しましたか?
または、型のないcatchブロックは、CLSに準拠していない例外をキャッチする必要があります。
try
{
// Code here.
// Maybe a COM call here.
}
catch(Exception ex)
{
// Managed exceptions.
}
catch
{
// non CLS-compliant exceptions.
}
個別のAppDomainを使用すると、アプリケーションが最初に強制終了される理由によっては機能しない可能性があります。未処理の例外はプロセス全体を強制終了し、現在、例外はキャッチされていないため未処理です。
または、別のプロセス内でCOMオブジェクトを使用し、2つのプロセス間通信を使用することもできます。これにより、問題のあるコードが独自のプロセスに分離され、メインプロセスを強制終了することなく、必要に応じて再起動/使用できるようになります。