C# で記述された 2 つのアプリケーションがあるとします。1 つ目は、「OnEmailSent」と呼ばれるイベントを発生させるサードパーティ アプリケーションです。
2つ目は、1つ目のアプリの「OnEmailSent」でもなんとか購読したいという思いで書いたカスタムアプリです。
「OnEmailSent」イベントをリッスンする最初のアプリケーションのインスタンスに 2 番目のアプリケーションをアタッチする方法はありますか?
さらに明確にするために、私の具体的なシナリオは、"OnEmailSent" イベントを発生させる c# で記述されたカスタム サード パーティ アプリケーションがあるというものです。リフレクターを使用してイベントが存在することを確認できます。
やりたいことは、このコンポーネントが電子メールを送信するときに他のアクションを実行することです。
私たちが考えることができる最も効率的な方法は、anders が提案したように、何らかの形式の IPC を使用して、サードパーティ コンポーネントによって発生する OnEmailSent イベントをリッスンできるようにすることです。
コンポーネントは C# で記述されているため、実行中のプロセスにアタッチできる別の C# アプリケーションを記述し、OnEmailSent イベントが発生したことを検出すると、独自のイベント処理コードを実行するというアイデアをいじっています。
私は何かが欠けているかもしれませんが、リモーティングがどのように機能するかについて私が理解していることから、クライアントがサブスクライブできるある種のコントラクトを定義するサーバーが必要になるということです。
たとえば、誰かが別のアプリケーションからサブスクライブしたいイベントを公開する Outlook のようなスタンドアロン アプリケーションを作成したシナリオについて考えていました。
私が考えているシナリオは、.net デバッガーと、実行中のアセンブリにアタッチして、実行中にコードを検査する方法だと思います。