代码之家  ›  专栏  ›  技术社区  ›  Tim

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

  •  2
  • Tim  · 技术社区  · 14 年前

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

    我越来越喜欢使用反应式扩展,我一直在尝试以下操作:

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

    但是,事件聚合器似乎挂起在以下位置的发布方法中:

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

    我猜关于系统、反应式或聚合器的设计有一些我不完全理解的东西。有人有什么想法吗?

    2 回复  |  直到 13 年前
        1
  •  1
  •   Ana Betts    14 年前

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

    尝试:

    .BufferWithTime(TimeSpan.FromSeconds(1), Scheduler.TaskPool);
    
        2
  •  0
  •   Tim    14 年前

    结果发现这是一个线程问题,与RX或事件聚合器无关。

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