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

浙公网安备 33010602011771号