我写了一个主题,用于推送我从RabbitMQ收到的消息。
我希望在最终被触发之前总是收到订阅上的所有消息,但我通常没有收到所有消息,并且可以看到在最终被调用之后调用了订阅。
_messageSummarySubject = new Subject<MessageSummary>();
_subscriber = _messageSummarySubject
.Finally(Finisehd)
.Buffer(TimeSpan.FromMilliseconds(100))
.SubscribeOn(Bootstrapper.Resolve<ISchedulerService>().DispatcherScheduler)
.ObserveOn(Bootstrapper.Resolve<ISchedulerService>().DispatcherScheduler)
.Subscribe(
x =>
{
//This is sometime called after finally
});
ThreadPool.QueueUserWorkItem(s => SomeAction(_messageSummarySubject));
SomeAction基本上是在调用
subject.OnNext(messageSummary);
在线程中几次,一旦线程关闭,调用subject.OnCompleted();
这是正确的行为还是我做错了什么?