反应式扩展 (Rx) 未命中事件



为什么 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);
        });
}

相关内容

  • 没有找到相关文章

最新更新