为什么rx观察到的事件错过了?事件在发生时不会被处理,因此对象的内部状态不会更新,并导致接收到的以下事件出现问题。 可以归结为ObserveOn NewThread吗?
private void UpdateList(Client client)
{
var listUpdateReceive = Observable
.FromEvent<ListEventArgs>(ev => client.ListUpdateReceive += ev, ev => client.ListUpdateReceive -= ev);
listUpdateReceive.Take(1)
.Subscribe(r =>
{
TraceInformation("List is updated.");
OnListUpdateReceived(r.Sender, r.EventArgs);
});
}
我可以看到收到的事件,但上面的代码正在阻止!
答案 0 :(得分:1)
您的代码示例对我来说很合适,但使用Take(1)
运算符只会导致第一个事件捕获,此时流将完成,您将不会收到任何其他通知。您是否打算只收听单个事件通知?
也许删除Take(1)会给你正确的行为吗?
private void UpdateList(Client client)
{
var listUpdateReceive = Observable
.FromEvent<ListEventArgs>(ev => client.ListUpdateReceive += ev, ev => client.ListUpdateReceive -= ev);
listUpdateReceive.Subscribe(r =>
{
TraceInformation("List is updated.");
OnListUpdateReceived(r.Sender, r.EventArgs);
});
}