Webブラウザーコントロールを備えたC#WinFormsアプリケーションがあります。このアプリケーションには、IPTVビデオを再生するサードパーティのActiveXオブジェクトが埋め込まれたHTMLページが読み込まれます。 Exterityによって供給されたActive X。私はまた、同じ症状で、さらに信頼性の低いVLC ActiveXコントロールを試しました。 XPとWin7の両方で同じ動作。WinFormsのWebブラウザーのActiveXがアプリケーション全体をクラッシュする
断続的に、WinFormsアプリケーション全体が終了します。私はすでにのでThreadExceptionとUnhandledExcetionイベントを処理:
[STAThread]
static void Main(string[] args)
{
//set up global exception handling
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
をこれらのイベントは、アプリケーションが終了する前に発生しません。数年前から存在していて、何度も他のエラー(タイムアウトデータベース接続など)が発生したため、彼らは仕事をしていると信じています。 Windowsのイベントビューにエントリが表示されません。私のexeプロセスは単に消えます。
私はAppDomainsを読んで、WebBrowserコントロールをメインプログラム/フォームとは別の場所に置くことができるかどうか疑問に思っています。何かアドバイスをいただきました。
また、私は扱うことができる他の方法があります。つまり、プロセスが終了した時点で上端まで処理されていない例外があります。
もし私がアクセス違反を捕まえることができたら、私はうれしくアプリケーション全体をApplication.Restart()で再起動します。私はそのセッションでさらなるメモリ破損から私を救うことができれば幸いです。これは永続的な再起動につながる可能性がありますが、それはプロセス全体を終了するよりも優れています。 (偉大なフィドラー2への感謝!) – Russell
私はWinDBGログをActiveXオブジェクトの開発者に提供しました。彼らはそれを探しています。 :-) – Russell