Проблемы с агрегатором событий, использующим реактивные расширения - PullRequest
2 голосов
/ 08 ноября 2010

Чтобы связать мое приложение MEF , я использую агрегатор событий , найденный здесь . Он идеально подходит для распределения данных в модулях, которые действительно нуждаются в этом.

Я больше использую реактивные расширения и пытаюсь сделать следующее:

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

Однако агрегатор событий, кажется, зависает в методе публикации на:

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

Полагаю, что в дизайне system.reactive или агрегатора есть что-то, что я не до конца понимаю. У кого-нибудь есть идеи?

Ответы [ 2 ]

1 голос
/ 09 ноября 2010

На каких потоках работают и производитель, и потребитель? Они раздельные?

Попытка:

.BufferWithTime(TimeSpan.FromSeconds(1), Scheduler.TaskPool);
0 голосов
/ 23 ноября 2010

Оказалось, что проблема с потоками не связана с Rx или агрегатором событий.

Изменение одного из моих вызовов пользовательского интерфейса на BeginInvoke остановило его зависание, и это заставило меня взглянуть на нужные кусочки кода ...

...