C# Event(事件) 和 相机采集事件

发布者(Publisher):发出事件的人
例子:相机、按钮、定时器
订阅者(Subscriber):监听事件的人
例子:界面显示照片、保存照片、处理图像
事件(Event):通知的消息
例子:照片已采集完成

using System;

// 1. 相机类(发布者)
public class Camera
{
// 2. 定义事件:采集到图像时触发
// Action<byte[]> = 无返回值,参数是 图片数据(byte数组)
public event Action<byte[]> ImageCaptured;

// 模拟:相机拍照采集
public void Capture()
{
Console.WriteLine("相机正在拍照...");

// 模拟生成图片数据
byte[] imageData = new byte[1024];

// 3. 触发事件!通知所有订阅者
// ?.Invoke() = 如果有人订阅,就执行
ImageCaptured?.Invoke(imageData);
}
}

// 主程序
class Program
{
static void Main()
{
// 创建相机对象
Camera camera = new Camera();

// 4. 订阅事件(监听拍照)
// += 等于:我要接收通知
camera.ImageCaptured += OnImageCaptured;

// 调用拍照 → 自动触发事件
camera.Capture();
}

// 事件响应方法(订阅者)
static void OnImageCaptured(byte[] data)
{
Console.WriteLine($"收到照片!数据长度:{data.Length}");
}
}

程序运行顺序:
1进入 Main
2创建相机对象
3订阅事件(+=)
4调用 camera.Capture()
5输出:相机正在拍照...
6触发事件 ImageCaptured?.Invoke()
7自动调用 OnImageCaptured
8输出:收到照片!数据长度:1024

posted @ 2026-04-06 00:41  菜鸟的奋斗军  阅读(22)  评论(0)    收藏  举报