【问题标题】:How do I subscribe to, handle, and keep track of multiple events in C#如何在 C# 中订阅、处理和跟踪多个事件
【发布时间】:2021-08-19 07:28:31
【问题描述】:

所以我可以订阅一个事件并对该事件执行如下功能:

socket.eventPool.Subscribe("flight", 
  new EventHandler<flightArgs>((x, y) => 
    Console.WriteLine(y.STR1.temp + " " + y.STR1.alt)));
socket.SubscribeEquip("gulfstream");

但是,我希望能够概括这个想法并订阅和跟踪多个不同的事件。例如,除了“gulfstream”之外,我还希望能够在“boeing747”和其他我想要执行相同或不同操作的已知内容上执行此操作。但是,问题是我不希望 C# 在订阅 2 个或更多事件的行为中感到困惑,因为 socket.eventPool.Subscribe("flight", new EventHandler((x, y) => Console.WriteLine(y .STR1.temp + " " + y.STR1.alt)));将保持不变。

关于如何做到这一点有什么建议吗?事件内容的语法有点奇怪,所以我不确定如何在类中实现它。类会成为实例化单独订阅和使用事件的对象的方法吗?非常欢迎提供示例。

【问题讨论】:

    标签: c# class events


    【解决方案1】:

    我个人会使用reactivex 进行此类事件处理。它使处理订阅变得更加容易。

    例如

    var parallel = Observable.WhenAll(
        ObservableWWW.Get("http://google.com/"),
        ObservableWWW.Get("http://bing.com/"),
        ObservableWWW.Get("http://unity3d.com/")
    );
    
    parallel.Subscribe(xs =>
    {
        Debug.Log(xs[0].Substring(0, 100)); // google
        Debug.Log(xs[1].Substring(0, 100)); // bing
        Debug.Log(xs[2].Substring(0, 100)); // unity
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-20
      • 1970-01-01
      • 1970-01-01
      • 2017-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多