使用反应式扩展的事件聚合器的问题

发布于 2024-10-01 12:24:27 字数 795 浏览 5 评论 0原文

为了链接我的 MEF 应用程序,我使用事件聚合器 在这里找到。它非常适合将数据分发到实际需要它的模块中。

我越来越多地使用反应式扩展,并且一直在尝试执行以下操作:

eventSubscription = MainApp.Events.GetEvent<UDPMessageIn>()
                                  .BufferWithTime(TimeSpan.FromSeconds(1))
                                  .Subscribe(x => 
                                       { 
                                           // do something here...
                                       });

但是,事件聚合器似乎挂在发布方法中:

((ISubject<TEvent>)subject).OnNext(sampleEvent);

我猜测 system.reactive 的设计有些问题或者我不完全理解的聚合器。有人有什么想法吗?

To link up my MEF application, I'm using the event aggregator found here. Its been perfect for distributing data into modules that actually need it.

I'm getting more into using the reactive extensions and I've been trying to do the following:

eventSubscription = MainApp.Events.GetEvent<UDPMessageIn>()
                                  .BufferWithTime(TimeSpan.FromSeconds(1))
                                  .Subscribe(x => 
                                       { 
                                           // do something here...
                                       });

However, the event aggregator appears to hang in the Publish method on:

((ISubject<TEvent>)subject).OnNext(sampleEvent);

I'm guessing that there's something about the design of either system.reactive or the aggregator that I don't fully understand. Anybody got any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

吾性傲以野 2024-10-08 12:24:27

生产者和消费者都在哪些线程上运行?他们是分开的吗?

尝试:

.BufferWithTime(TimeSpan.FromSeconds(1), Scheduler.TaskPool);

What threads are both the producer and consumer running on? Are they separate?

Try:

.BufferWithTime(TimeSpan.FromSeconds(1), Scheduler.TaskPool);
来日方长 2024-10-08 12:24:27

事实证明这是一个与 Rx 或事件聚合器无关的线程问题。

将我的一个 UI 调用更改为 BeginInvoke 阻止了它挂起,这让我查看了正确的代码位......

It turned out to be a threading issue that was unrelated to Rx or the event aggregator.

Changing one of my UI Invokes to BeginInvoke stopped it from hanging and this got me looking at the right bits of code...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文