Rx ForkJoin无法处理自定义事件



我有一些自定义事件参数:

AutoOccurPerformedEventArgs : EventArgs

带有这些事件参数的同一事件在两个不同的位置引发,我正试图使用反应扩展来分叉连接这些,然后订阅

var events = new[]
                        {
                            Observable.FromEvent<AutoOccurPerformedEventArgs>(viewModel1, "AutoOccurActionPerformed"),
                            Observable.FromEvent<AutoOccurPerformedEventArgs>(viewModel2, "AutoOccurActionPerformed"),
                        };
events.ForkJoin().Subscribe(op => IsUpdatedByAutoOccur = op.Any(observedItem => observedItem.EventArgs.IsUpdatedByAutoOccur));

我在订阅中的匿名代理从未被调用。不会引发任何异常,只是永远不会调用委托。

然而,如果我单独订阅每个事件,而没有ForkJoin,则事件将得到正确处理(尽管是单独的)

Observable.FromEvent<AutoOccurPerformedEventArgs>(viewModel1, "AutoOccurActionPerformed")
                .Subscribe(o => IsUpdatedByAutoOccur = o.EventArgs.IsUpdatedByAutoOccur ? true : IsUpdatedByAutoOccur);
Observable.FromEvent<AutoOccurPerformedEventArgs>(viewModel2, "AutoOccurActionPerformed")
                .Subscribe(o => IsUpdatedByAutoOccur = o.EventArgs.IsUpdatedByAutoOccur ? true : IsUpdatedByAutoOccur);

关于为什么ForkJoin不起作用,有什么想法吗?

查看有关ForkJoin方法的intellisense帮助。尽管有拼写错误,但上面写着:

并行运行两个可观测序列,并组合它们的最后一个元素。

由于您对事件执行ForkJoin,因此永远不会得到结果,因为这些类型的可观察性永远不会完成。

你可能想使用MergeCombineLatest来实现你想要的,但由于你没有描述你的意图,我无法给出更好的建议。

相关内容

  • 没有找到相关文章