当前位置: 首页 > news >正文

C#防止多次注册事件

  • 事件声明和使用部分的代码,防止多次注册事件主要通过判断事件中类型的委托实例是否为空实现
public class ReRegisterEvent
{public delegate void Mydelegate(string message);private Mydelegate? mydel;public event Mydelegate Myevent{add{if (mydel == null){mydel += value;}}remove{mydel -= value;}}public void WriteMessage(string message){mydel?.Invoke(message);}
}
  • 事件订阅和触发的代码,以下代码中多次注册后只执行一次注册的方法
using NUnit.Framework.Internal.Execution;namespace SampleTestProject
{public class Tests{[SetUp]public void Setup(){}[Test]public void Test1(){ReRegisterEvent reRegisterEvent = new ReRegisterEvent();reRegisterEvent.Myevent += Tests_Myevent;reRegisterEvent.Myevent += Tests_Myevent;reRegisterEvent.WriteMessage("");Assert.Pass();}private void Tests_Myevent(string message){Console.WriteLine(message);}}
}

补充一下个人见解,解决防止多次注册事件场景是同事遇到的,若代码结构设计合理和代码实现规范,其实这个问题不应该遇到。现实情况可能没有足够的时间去设计和规范实现,当业务越来越复杂代码量变大时可能会带来这个问题。

相关文章:

  • 学习笔记——网络管理与运维——SNMP(SNMP版本)
  • uniapp如何实现跳转
  • GenICam标准(六)
  • MySQL的三种重要的日志
  • Vue3 和 Vue2 对比分析及示例代码解析(初级)
  • Python **运算符(python**kwargs:参数解包)(kwargs:keyword arguments)
  • 10:Hello, World!的大小
  • 小程序无法调用服务端问题排查
  • uniapp地图自定义文字和图标
  • c++编程(17)——deque的模拟实现(1)迭代器篇
  • vuex是什么?如何使用?使用他的功能场景?
  • [大模型]XVERSE-MoE-A4.2B Transformers 部署调用
  • 大数据同步方案怎么选,才能提高企业的业务效率?
  • 1832javaERP管理系统之车间计划管理Myeclipse开发mysql数据库servlet结构java编程计算机网页项目
  • 【菜狗学前端】uniapp(vue3|微信小程序)实现外卖点餐的左右联动功能
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Angular4 模板式表单用法以及验证
  • eclipse的离线汉化
  • Java比较器对数组,集合排序
  • Java知识点总结(JavaIO-打印流)
  • js递归,无限分级树形折叠菜单
  • magento 货币换算
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 飞驰在Mesos的涡轮引擎上
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 排序算法之--选择排序
  • 前端存储 - localStorage
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 再谈express与koa的对比
  • Java性能优化之JVM GC(垃圾回收机制)
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • (C语言)fgets与fputs函数详解
  • (el-Transfer)操作(不使用 ts):Element-plus 中 Select 组件动态设置 options 值需求的解决过程
  • (ibm)Java 语言的 XPath API
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (十八)三元表达式和列表解析
  • (五)网络优化与超参数选择--九五小庞
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (转)Unity3DUnity3D在android下调试
  • (转载)深入super,看Python如何解决钻石继承难题
  • .gitignore文件—git忽略文件
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .NET命名规范和开发约定
  • 。Net下Windows服务程序开发疑惑
  • @Bean有哪些属性
  • @NestedConfigurationProperty 注解用法
  • @requestBody写与不写的情况
  • @Validated和@Valid校验参数区别
  • [2018-01-08] Python强化周的第一天
  • [2024] 十大免费电脑数据恢复软件——轻松恢复电脑上已删除文件
  • [AX]AX2012开发新特性-禁止表或者表字段