为什么 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);
});
}
我可以看到事件已收到,但上面的代码正在阻止!
您的代码示例对我来说看起来不错,尽管使用 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);
});
}