vb.net はアプリケーション全体で発生イベントを監視できますか?
-
19-09-2019 - |
質問
気が狂ってしまったのかもしれない…しかし、私はこれを行う方法があることを願っています。
イベント処理を含む基本クラスがあります。コンソール アプリケーションがワークフローを実行しています。そのワークフローの一部は、別のスレッドで特定の間隔でイベントを発生させ、ワーカーの現在の状態 (多くの人がハートビートと呼ぶのを聞いたことがあります) をブロードキャストすることです。
同じソリューション内に Windows フォームである別のプログラムもあり、コンソール アプリケーションで何が起こっているかをリッスンしてワーカーの状態を表示できるようにしたいと考えています。両方を同時に実行してイベントがトリガーされていることを確認しましたが、モニターは発生したイベントを何も検出できませんでした。
これを行う方法はなく、データベースログ記録方法または他の方法を使用する必要があるのではないかと心配しています...しかし、もし誰かがイベント (またはイベント スタイル) ロジックを使用してアプリケーション間で通信する方法を知っていたら、私は感謝します。
現在、アプリケーションは同じ場所から実行されています。目標は、最終的にモニター アプリケーションをネットワークのブロードキャスターに接続して、ワークステーションがマシンにログインせずに特定のワーカーの状態を監視できるようにし、メイン モニターにすべてのワーカーの完全なステータスを表示できるようにすることです。
これを拡張/明確にする必要がある場合はお知らせください。これを入力している間、2歳の子供にスターウォーズを見させているので、何かを見逃している可能性があります。
解決
いくつかの方法があります。リモート処理、カスタム Windows メッセージ、名前付きパイプを使用します。1つの方法は、 Visual Basic .NET または Visual Basic 2005 でプロセス間通信に名前付きパイプを使用する方法
リモート処理の例を次に示します。 VB.Net での簡単なプロセス間通信
カスタム Windows メッセージの例を次に示します。 VB.NET、VB6、C# ウィンドウ メッセージングによるプロセス間通信
おそらく最も「最新の」方法は、WCF コールバック チャネルを使用することです。 WCF でのコールバック コントラクトを使用した非同期パブリッシュ/サブスクライブ イベント スタイルの通信