Reactive Framework の使用方法を学び始めたばかりで、複数のサブスクライバーにマルチキャスト パブリッシュできることに苦労しています。
次のようにすべてが正常に機能していました。
m_MessagePublisher = m_ServerClient.MessageQueue
.GetConsumingEnumerable()
.ToObservable(TaskPoolScheduler.Default);
var genericServerMessageSubscriber = m_MessagePublisher
.Where(message => message is GenericServerMessage)
.Subscribe(message =>
{
// do something here
}
しかし、これはマルチキャストをサポートしていないことに気付きました。別のサブスクライバーをアタッチしようとすると、同じメッセージがヒットするはずでしたが、起動しませんでした。私は .MultiCast 拡張機能を読み込んでいて、サブジェクトがこれにどのように関与するかを理解しようとしていますが、まだ機能させることができませんでした:
var subject = new Subject<BesiegedMessage>();
var messagePublisher = m_ServerClient.MessageQueue
.GetConsumingEnumerable()
.ToObservable(TaskPoolScheduler.Default)
.Multicast(subject);
// All generic server messages are handled here
var genericServerMessageSubscriber = subject
.Where(message => message is GenericServerMessage)
.Subscribe(message =>
{
// do something here
}
しかし今では、以前は問題なく機能していた 1 つのサブスクライバーを含め、どのサブスクライバーもヒットしていません。複数のサブスクライバーに適切にマルチキャストできるようにするために、ここで何が欠けていますか?
更新: Multicast(subject) の代わりに Subscribe(subject) を使用すると、マルチキャストに機能しているように見えるため、 .MultiCast() の目的について非常に混乱しています