これをどのように表現しても検索結果が不足していることに基づいて、私はこれについて間違って考えていると確信しています.
多数のオブジェクトを作成するプログラムがあり、特にインスタンスが作成されるとすぐに、他のすべてのインスタンスをリッスンするように接続する必要がある多くのイベントがあります。純粋なイベントを通じてこれを管理することは、私には意味がありません。これが、pub/sub パターンを使用して物事を扱いやすくするための私の考えです。また、pub/sub は純粋にインプロセスであるため、イベントが境界を越えることはありません。また、イベントはメモリ外のどこにも永続化されないため、イベントの再生はありません。
問題は、通常CancelEventArgsであるイベントに伴います。サブスクライバーがキャンセル済みとしてマークできるイベントを公開する方法はありますか?
可能な解決策についての私の現在の考えは次のとおりです。
イベントを発行し、
ShouldCancelEventX
イベントが発行されるまでしばらく待ちEventXCancelled
ます。期間内に公開されていない場合は、EventX
イベントを公開します。これに関する最大の問題は、イベントを待機するための任意の期間です。すべてのサブスクライバーがイベントを受信した後にパブリッシャーに通知できるように、pub/sub 実装にもう少しロジックを持たせます。これにより、パブリッシャーは
ShouldCancelEventX
、すべてのサブスクライバーがいつメッセージを受信したかを知ることができます。私が見た pub/sub のすべての実装がvoid
Publish メソッドを提供しているので、これは間違っているように感じます。繰り返しになりますが、私はこれについて間違った方法で考えていると信じています。