2

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

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

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

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

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

我猜想 system.reactive 或聚合器的设计有一些我不完全理解的东西。有人有什么想法吗?

4

2 回答 2

1

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

尝试:

.BufferWithTime(TimeSpan.FromSeconds(1), Scheduler.TaskPool);
于 2010-11-09T05:12:13.790 回答
0

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

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

于 2010-11-23T14:59:57.080 回答