CodeGym
AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • 订阅的详细拆解 ( +=)

    C# SELF
    等级 53,课时 0
    我们来拆解 C# 里事件订阅是怎么工作的:什么是多播 delegate 和它的 invocation list,编译器如何把 +=/ -= 展开成对 Delegate. Combine/ Remove 的调用,关键字 event 怎样保护我们,以及在多重订阅和 lambda 场景下常见的坑。所有内容用基于 EventHandler 的实践例子来讲,顺带扒一些细节。
    可用
  • 取消订阅事件 ( -=) 与 内存泄漏

    C# SELF
    等级 53,课时 1
    在这堂课里我们会讲明白,为什么忘记取消订阅事件会在 .NET 中导致内存泄漏,如何正确使用操作符 -= 取消订阅,在哪儿和什么时候做取消订阅(包括实现 IDisposable),如何安全地使用 lambda 表达式,以及开发者在处理事件时常犯的那些典型错误。
    可用
  • 订阅者与事件的安全调用

    C# SELF
    等级 53,课时 2
    我们来看看 C# 里事件的订阅是怎么运作的:如何添加和移除处理器,委托和调用列表背后是什么,为什么要取消订阅,以及如何在多线程代码里安全地触发事件。聊聊常见陷阱(处理器里的异常、数据竞争)和实用技巧:把 delegate 复制到本地、通过 GetInvocationList() 遍历、一次性订阅,以及批量退订。
    可用
  • 模式 "观察者" ( Observer)

    C# SELF
    等级 53,课时 3
    在这节课里我们来讲解设计模式 Observer:如何把发布者和订阅者解耦以不违背 OCP,以及在 C# 里用事件和委托怎么优雅地实现它。我们会对比用接口和观察者列表的「手动」实现和基于事件的实现( EventHandler<T>),给 Worker 连接多个监听器,讨论优点和常见坑(因为没退订导致的内存泄漏、重复订阅、处理器里抛异常),并可视化常见的泄漏模式。
    可用
  • 实际场景和最佳实践

    C# SELF
    等级 53,课时 4
    在这节课里我们来看在 .NET 中使用事件的真实场景:对用户操作的响应、进度和完成操作的通知、域对象的生命周期事件、在多线程环境下的工作(通过 SynchronizationContext/ Dispatcher 进行 marshal)以及 Event Aggregator 模式。还会讨论最佳实践:标准委托 EventHandler/ EventHandler<T>、不可变的 EventArgs、通过 ?.Invoke 的安全调用、通过 OnEventName 进行封装、取消订阅以防止泄露,以及线程安全。
    可用
Learn
  • 注册
  • Java 课程
  • 任务帮助
  • 定价
  • Java 语法
社区
  • 用户
  • 文章
  • 论坛
  • 聊天
  • 成功故事
  • 动态
  • 联盟计划
Company
  • 关于我们
  • 联系方式
  • 评价
  • 媒体中心
  • CodeGym for EDU
  • 常见问题
  • 支持
CodeGymCodeGym 是一个从零开始学习 Java 编程的在线课程。该课程是初学者掌握 Java 的完美方式。它包含 1200+ 个带即时验证的任务,以及必要的 Java 基础理论。为了帮助你在学习中取得成功,我们实现了一系列激励功能:测验、编码项目、关于高效学习的内容,以及 Java 开发者职业相关内容。
关注我们
界面语言
English Deutsch Español हिन्दी Français Português Polski বাংলা
简体中文
मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
“程序员是培养出来的,不是天生的” © 2026 CodeGym
MastercardVisa
“程序员是培养出来的,不是天生的” © 2026 CodeGym