2008-09-12 7 views
2

私はスクリーンスクレイピングアプリケーションへのアップグレードを進めています。私たちは、ActiveXコントロールを使用して、IBMメインフレームからスクリーンを削り取っています。メインフレームプログラムがハングし、ActiveXコントロールがクラッシュし、アプリケーションがクラッシュすることがよくあります。メインフレームやActiveXのソースコードにアクセスすることはできません。私たちは独自のアクティブxコントロールを書くつもりはありません。.NetのActiveXコントロールでアプリケーションが検出されなくなりました。

ActiveXコントロールをカプセル化して、アプリケーションがハングしたことを検出し、プロセスを終了してコードで再起動できるようにするにはどうすればよいのでしょうか?

別々のアプリケーションを2つ作成する必要がありますか? 1つは、他のコントローラをチェックし、ハングアップしたときにプロセスを強制終了/再起動するコントローラですか?

別々のアプリドメインに属している必要がありますか? 2つのプログラムが別々のアプリドメインにあっても、互いに通信することは可能ですか?

+0

大括弧:*アプリケーション – GEOCHET

答えて

1

実行可能ファイルは、System.Diagnostics.Process.Start()で開始できます。これは、プロセスがまだアクティブであるかどうか定期的にチェックするために使用できるRespondingプロパティを持つProcessオブジェクトを返します。

これを行うには、2つのアプリケーションが必要です。そして、監視しているアプリケーションはメインウィンドウを持つ必要があります。これは、アプリケーションがメインウィンドウのメッセージキューからのメッセージをまだ処理しているかどうかをチェックすることで動作します。これはウィンドウが「応答しない」というウィンドウタイトルに追加するのと同じ方法です

+0

2つのアプリケーションを互いに話すようにするための提案はありますか?私はたぶんデータベースを使用します。簡単な方法はありますか? – ctrlShiftBryan

+0

アプリケーションは、お互いのメッセージループに物事を投稿させることができます。しかし、おそらくプロセス間の通信のためのより良い方法があります。 IPCのためにSOを検索してみてください。 – Mendelt

関連する問題