c# - 许多不同的类对象监听一个事件c#
问题描述
我有一个相机处理程序类,每次它接收到帧数据时,它都会调用一个事件,如下所示:
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.
}
一旦一个类对象想要访问它byte[] frameData
,它所要做的就是订阅该事件,如下所示:
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
.
当我创建一个新类并类似地订阅时,我现在有两个 CameraHandlers 实例,这将不起作用。
实现此功能的最干净和“规范”的方式是什么?
解决方案
您可以通过自定义事件访问器挂钩任意数量的侦听器。
public class Start1
{
public EventHandler FrameAcquired
{
add
{
this.camera.FrameAcquired += value;
}
remove
{
this.camera.FrameAcquired -= value;
}
}
推荐阅读
- spring-boot - 如何配置 Spring Boot JTA + Bitronix?
- ios - 如何在 SwiftUI 中捕获/记录选择列表的响应
- python - 如何从python中的api twitter获取json响应中的特定数据键
- c++ - Visual Studio Code C++ 上的不准确错误
- r - 用 Rccp 重写循环
- three.js - Three.js : 加载对象与 OBJLoader 的碰撞
- reactjs - Firebase 和 React 托管 - 不加载 App.js
- python - 从 tensorflow 对象检测 api 打印类名
- python - MySQL 与 python (pyTelegramBotAPI)
- java - Hibernate 和 Eclipse 编辑器