【问题标题】:Issues with Event Aggregator using Reactive Extensions使用响应式扩展的事件聚合器问题
【发布时间】:2012-03-18 17:39:13
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 我不熟悉 Reactive Extensions,但我会关注这个问题以了解更多信息。顺便说一句,MEF 是什么?
  • 托管可扩展性框架。 mef.codeplex.com。它内置于 .NET 4.0

标签: c# mef system.reactive eventaggregator


【解决方案1】:

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

试试:

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

【讨论】:

    【解决方案2】:

    原来是与 Rx 或事件聚合器无关的线程问题。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多