Aby połączyć moje MEF aplikacji, używam agregatora zdarzeń znaleźć tutaj. Był idealny do dystrybucji danych do modułów, które rzeczywiście tego potrzebują.
Używam reaktywnych rozszerzeń i próbuję wykonać co następuje:
eventSubscription = MainApp.Events.GetEvent<UDPMessageIn>()
.BufferWithTime(TimeSpan.FromSeconds(1))
.Subscribe(x =>
{
// do something here...
});
Jednak agregator zdarzeń wygląda na zawieszony w metodzie publikowania na:
((ISubject<TEvent>)subject).OnNext(sampleEvent);
Zgaduję, że jest coś takiego w konstrukcji systemu .reactive lub agregatora, którego nie rozumiem.
Odpowiedzi:
1 dla odpowiedzi № 1Jakie wątki działają zarówno na producencie, jak i na kliencie? Czy są oddzielne?
Próbować:
.BufferWithTime(TimeSpan.FromSeconds(1), Scheduler.TaskPool);
0 dla odpowiedzi nr 2
Okazało się, że jest to wątek, który nie był związany z Rx ani z agregatorem zdarzeń.
Zmiana jednego z moich wywołań interfejsu użytkownika na BeginInvoke powstrzymała go od zawieszenia, a to pozwoliło mi spojrzeć na właściwe fragmenty kodu ...