C#编程-使用事件

在这里插入图片描述

在这里插入图片描述

使用事件

事件是一个动作或发生的事情,例如:鼠标点击、按键、鼠标移动或系统产生的通知。应用程序可以在事件发生的时候做出响应。通知的一个示例是中断。事件是对象发生的消息以表示事件的发生。事件是进程内通信的有效方法。它们对对象时有用的,因为它们标识了单个状态改变,可能对对象的客户端有价值。

考虑事件的示例。时钟是一个对象,它显示早上6点的时间,以闹钟的形式产生一个事件。您接受闹铃事件并且做出相应的动作。

下图显示了闹铃事件及对其的处理。
在这里插入图片描述
下图是一个泛化表示,它解释了事件和事件处理。
在这里插入图片描述
在C#中,委托与事件一起使用以实现事件处理。.NET Framework事件模型使用委托来将事件通知与方法绑定,称为事件处理程序。当事件产生的时候,委托调用相关事件处理程序。考虑一个网球视频游戏的场景。游戏玩家一用球拍击球就会生成一个事件。现在根据球拍的位置,委托将为事件选择事件处理程序。如果球拍的位置在玩家的右边,会产生将球发到场地左边的方法。当用户生成击球事件时,会动态确定以特定方法发球。


在这里插入图片描述

将委托用于事件

事件是在类中声明和产生的。可使用委托在相同类或其他类中将它们与事件处理程序相关联。事件是类的一部分,这个类用于发布事件。但是,其他类可以接受这些事件,或者换句话说,可以订阅这些事件。事件使用发布者和订阅者模型。

发布者是一个包含事件和委托定义的对象。事件与委托的关联还在发布者类中指定。发布者的对象调用事件,它被通知给其他对象。

订阅者是要接受事件并为事件提供处理程序的对象。发布者类的委托调用订阅者类的方法。这个在订阅者类中的方法时事件处理程序。发布者和订阅者模型的实现可以由相同类定义。

下图显示了发布者和订阅者对象使用的机制。
在这里插入图片描述
事件的实现包括事件定义、事件订阅和事件通知。

定义事件

在发布者类中事件的定义包括委托的声明和基于委托的事件的声明。

下面的代码定义了一个名为TimeToRise的委托和一个名为RingAlarm的事件,当它被引发时,调用TimeToRise委托:

	public delegate void TimeToRise();private event TimeToRise RingAlarm;

订阅事件

发布者类事件需要与它的处理程序关联。事件处理程序方法时使用委托与事件关联的。当发布者对象产生事件的时候,订阅对象与需要调用的方法关联。

考虑名为Student的类,它包含一个名为WakeUp()的方法。要求是应在上午6点调用W

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/623311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv8改进 | Conv篇 | 利用YOLO-MS的MSBlock轻量化网络结构(既轻量又长点)

一、本文介绍 本文给大家带来的改进机制是利用YOLO-MS提出的一种针对于实时目标检测的MSBlock模块(其其实不能算是Conv但是其应该是一整个模块),我们将其用于C2f中组合出一种新的结构,来替换我们网络中的模块可以达到一种轻量化的作用,我将其用于我的数据集上实验,包括多个…

Leetcode 第 379 场周赛题解

Leetcode 第 379 场周赛题解 Leetcode 第 379 场周赛题解题目1:10035. 对角线最长的矩形的面积思路代码复杂度分析 题目2:10036. 捕获黑皇后需要的最少移动次数思路代码复杂度分析 题目3:10037. 移除后集合的最多元素数思路代码复杂度分析 题…

SpringBoot+SSM项目实战 苍穹外卖(11) Apache ECharts

继续上一节的内容,本节学习Apache ECharts,实现营业额统计、用户统计、订单统计和销量排名Top10功能。 数据统计效果图: 目录 Apache ECharts入门案例 营业额统计用户统计订单统计销量排名Top10 Apache ECharts Apache ECharts 是一款基于 …

Debezium发布历史67

原文地址: https://debezium.io/blog/2019/08/20/debezium-0-10-0-beta4-released/ 欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯. Debezium 0.10.0.Beta4 发布 八月 20, 2019 作者: Gun…

解锁 JavaScript 数组的强大功能:常用方法和属性详解(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

20240114总结:无聊周末or有聊周末

有时候,连着几个周末感觉好忙,比如要去体检、验光、复光、爬山、打球、参加婚礼、跨年、年终总结、、练习讲话、乙肝疫苗、正骨、按摩、西丽湖吃饭、每天三国一两个钟、看下电影啥的,很快,很碎片。 但是这个周末完全没任务&#…

Java中HashSet如何检查重复

HashSet是基于哈希表实现的无序的、不重复的集合类。它在添加元素时会自动检查是否存在重复元素,通过hashCode()和equals()方法来确定元素的相等性。 HashSet添加元素步骤,先通过hashCode找出位置,再通过equals()比较是否相等: …

毕业设计:基于python微博舆情分析系统+可视化+Django框架 K-means聚类算法(源码)✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题&#xff…

C++ 完成Client分页显示log

分页显示t_log 1、获取用户的输入 1.1、写一个Input成员函数&#xff0c;处理输入进来的语句 std::string XClient::Input() {//清空缓冲//cin.ignore(4096, \n);string input "";for (;;){char a getchar();if (a < 0 || a \n || a \r)break;cout <<…

数据化思维:数据聚集与管理,数据运用与分析

数据化思维 数据化思维&#xff0c;是指在面对复杂问题时&#xff0c;通过收集、处理和分析数据&#xff0c;以数据为依据进行决策和解决问题的思维方式。它强调用事实说话&#xff0c;注重量化指标&#xff0c;能够帮助我们在海量信息中抽丝剥茧&#xff0c;发现深层次规律和…

LlamaIndex中的CustomLLM(在线加载模型)

一.使用 Flask 将模型封装为 REST 接口 主要是将 complete()和 stream_complete()方法封装为 REST 接口&#xff0c;如下所示&#xff1a; from flask import Flask, request, jsonify from transformers import AutoTokenizer, AutoModelForCausalLM app Flask(__name__)cla…

Linux comm命令教程:对比和分析文件内容(附案例详解和注意事项)

Linux comm命令介绍 comm&#xff0c;又称为_compare common lines_命令&#xff0c;是一个简易的Linux文件比较工具&#xff0c;主要用于标识出两个已排序文件中的共同部分。该命令逐行比较两个文件&#xff0c;并以三列形式显示结果。 Linux comm命令适用的Linux版本 通常…

Kubernetes 面试宝典

创建 Pod的主要流程? 客户端提交 Pod 的配置信息(可以是 yaml 文件定义的信息)到 kube-apiserver. Apiserver 收到指令后,通知 controllr-manager 创建一个资源对象 controller-manager 通过 apiserver 将 pod 的配置信息存储到 ETCD 数据中薪心中 kube-scheduler 检查到 p…

GPT编程:运行你的第一个聊天程序

环境搭建 很多机器学习框架和类库都是使用Python编写的&#xff0c;OpenAI提供的很多例子也是Python编写的&#xff0c;所以为了方便学习&#xff0c;我们这个教程也使用Python。 Python环境搭建 Python环境搭建有很多种方法&#xff0c;我们这里需要使用 Python 3.10 的环境…

一二三应用开发平台文件处理设计与实现系列之5——MinIO技术预研

背景 上篇介绍了文件读写框架设计与实现&#xff0c;同时顺便说明了本地磁盘存储模式的实现模式。 今天来说下基于文件读写框架&#xff0c;如何集成对象存储组件minio&#xff0c;集成之前&#xff0c;需要对minio进行必要的了解&#xff0c;本篇是minio的技术预研。 minio简…

两个Mesh路由、一个5口交换机,打造智能家居无缝网络覆盖

在现代家庭中&#xff0c;无线网络已经成为了必需品&#xff0c;每个人都希望享受到无缝连接的畅快体验。然而&#xff0c;由于信号覆盖范围的限制和信号干扰等问题&#xff0c;很多家庭在组网方面遇到了一些困难。 对于有需求的家庭而言&#xff0c;两个Mesh路由器是一种非常…

Linux|centos7操作系统|VMware虚拟机安装水星免驱USB网卡8188gu记录

引言&#xff1a; 最近对于嵌入式系统比较感兴趣&#xff0c;因此&#xff0c;计划先使用VMware workstation虚拟机试一试Linux系统下的网卡驱动安装 这不试不知道&#xff0c;一试吓一跳&#xff0c;发现Linux下的驱动安装还是比较麻烦的&#xff0c;下面将就本次的Linux系统…

机器学习 | 卷积神经网络

机器学习 | 卷积神经网络 实验目的 采用任意一种课程中介绍过的或者其它卷积神经网络模型&#xff08;例如LeNet-5、AlexNet等&#xff09;用于解决某种媒体类型的模式识别问题。 实验内容 卷积神经网络可以基于现有框架如TensorFlow、Pytorch或者Mindspore等构建&#xff…

Linux 专栏目录

常用指令 curl 1. curl -i 和 -I&#xff08;i 大写&#xff09;的区别 2. curl 只显示需要的行信息 scp 1. scp 服务器之间传输文件

格密码基础:SIS问题的困难性

目录 一. SIS问题的困难性 二. SIS问题归约的性质 2.1 2004年 [MR04] 2.2 2008年 【GPV08】 2.3 2013年【MP13】 三. 归约证明 3.1 核心理解 3.2 归约步骤 3.3 性质理解 一. SIS问题的困难性 推荐先阅读&#xff1a; 格密码基础&#xff1a;SIS问题的定义与理解-CSD…