多个不同的类对象侦听单个事件c#

多个不同的类对象侦听单个事件c#,c#,events,C#,Events,我有一个camera handler类,它每次接收帧数据时都会调用一个事件,如下所示: public delegate void FrameAcquiredCallback(byte[] frameData); public void OnFrameArrived(MediaFrameReader sender, MediaFrameArrivedEventArgs args) { FrameAcquired.Invoke(buffer); // buffer is a byte[]

我有一个camera handler类,它每次接收帧数据时都会调用一个事件,如下所示:

public delegate void FrameAcquiredCallback(byte[] frameData);

public void OnFrameArrived(MediaFrameReader sender, MediaFrameArrivedEventArgs args) {
     FrameAcquired.Invoke(buffer); // buffer is a byte[] that I set up previously.
}
public class Start1
{
     public CameraHandler camera;
     public void Start()
     {
        camera = new CameraHandler();
        camera.FrameAcquired += eventTest1;
     }
     public static void eventTest1(byte[] frameData)
     {
        Console.WriteLine("Received1");
     }
}
一旦类对象想要访问该
字节[]帧数据
,它所要做的就是订阅事件,如下所示:

public delegate void FrameAcquiredCallback(byte[] frameData);

public void OnFrameArrived(MediaFrameReader sender, MediaFrameArrivedEventArgs args) {
     FrameAcquired.Invoke(buffer); // buffer is a byte[] that I set up previously.
}
public class Start1
{
     public CameraHandler camera;
     public void Start()
     {
        camera = new CameraHandler();
        camera.FrameAcquired += eventTest1;
     }
     public static void eventTest1(byte[] frameData)
     {
        Console.WriteLine("Received1");
     }
}
现在我要做的不是只有一个类,而是多个不同的类对象,以便能够订阅同一事件并访问
byte[]frameData

当我创建一个新类并以类似方式订阅时,我现在有两个CameraHandler的实例化,这将不起作用


实现此功能的最干净和“规范”的方式是什么

你可以通过它吸引尽可能多的听众


你做的很好。如果只访问一个摄影机,则只需要一个CameraHandler对象来创建多个EventHandler


但是,如果您可以同时访问多个摄像头,则您需要一个CameraHandler列表,例如,
列出摄像头
,以便您可以从特定的摄像头获取所需的数据。但是,如果使用IMU信息,则应注意同步。

您还可以查看事件聚合器模式。

事件本身具有多播功能。它们基本上是具有添加/删除访问器的多播委托。这里有一个完整的介绍:我知道这一点,但只有当不同类中的EventHandler订阅同一个CameraHandler对象时,这才有效。我说的是,是否有一种方法可以对许多实例化的CameraHandler对象执行相同的操作。我还建议您将摄影机字段设置为私有。谢谢您的建议。