您是否需要“取消连接”匿名函数/lambda

2024-02-17

我的理解是,在 C# 中连接的任何事件处理程序都需要取消连接。

Object myObject = new Object();
myObject.Event += EventHandler; //Wired
myObject.Event -= EventHandler; //Unwired

但是您需要取消以下代码吗?如果是这样,怎么办?

Object myObject = new Object();
myObject.Event += (object sender, EventArgs e) => { }; //Wired
myObject.Event -= ????? //Unwire? How?

我的假设是不是?


是的,您需要 (*) 并且需要这样做:

Object myObject = new Object();
EventHandler handler = (object sender, EventArgs e) => { };
myObject.Event += handler; //Wired
myObject.Event -= handler; //Unwired

See here https://stackoverflow.com/questions/6200424/event-fires-more-and-more-times/6200458#6200458以获得解释。

(*)
由于垃圾收集,您不需要这样做。如果您不想让事件再调用您的处理程序,则需要执行此操作。

UPDATE:
澄清一下:
您想要取消连接事件处理程序的唯一原因是定义事件处理程序的对象可以被垃圾收集。
考虑下面的例子:

  • 你有课PowerSource有一个事件BlackOut.
  • 你有课LightBulb只要有电,它就会开启。它有一个方法ConnectToPowerSource。该方法订阅了BlackOut所提供的事件PowerSource.
  • 您有一个包含灯泡的集合

现在,简单地从列表中删除灯泡不会使其被垃圾收集,因为PowerSource仍然保留对LightBulb其实例BlackOut事件。只有注销后LightBulb来自BlackOut事件将使LightBulb收集垃圾。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

您是否需要“取消连接”匿名函数/lambda 的相关文章

  • 获取两个字符串之间的公共部分c# [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要的是获取两个单词之间的共同部分并获取差异 例子 场景1 word1 感言 word2 Test 将返回 公共部分Test 不同之
  • 捕获 foreach 条件中抛出的异常

    我有一个foreach在 foreach 本身的条件下循环期间中断的循环 有没有办法try catch抛出异常然后继续循环的项 这将运行几次 直到异常发生然后结束 try foreach b in bees exception is in
  • 处理 fanart.tv Web 服务响应 JSON 和 C#

    我正在尝试使用 fanart tv Webservice API 但有几个问题 我正在使用 Json Net Newtonsoft Json 并通过其他 Web 服务将 JSON 响应直接反序列化为 C 对象 这里的问题是元素名称正在更改
  • 有什么工具可以说明每种方法运行需要多长时间?

    我的程序的某些部分速度很慢 我想知道是否有我可以使用的工具 例如它可以告诉我可以运行 methodA 花了 100ms 等等 或者类似的有用信息 如果您使用的是 Visual Studio Team System 性能工具 中有一个内置分析
  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • 为什么密码错误会导致“填充无效且无法删除”?

    我需要一些简单的字符串加密 所以我编写了以下代码 有很多 灵感 来自here http www codeproject com KB security DotNetCrypto aspx create and initialize a cr
  • 转到 C# WPF 中的第一页

    我正在 WPF 中使用导航服务 为了导航到页面 我使用 this NavigationService Navigate new MyPage 为了返回我使用 this NavigationService GoBack 但是如何在不使用的情况
  • Xamarin Android:获取内存中的所有进程

    有没有办法读取所有进程 而不仅仅是正在运行的进程 如果我对 Android 的理解正确的话 一次只有一个进程在运行 其他所有进程都被冻结 后台进程被忽略 您可以使用以下代码片段获取当前正在运行的所有 Android 应用程序进程 Activ
  • 禁用 LINQ 上下文的所有延迟加载或强制预先加载

    我有一个文档生成器 目前包含约 200 个项目的查询 但完成后可能会超过 500 个 我最近注意到一些映射表示延迟加载 这给文档生成器带来了一个问题 因为它需要根据生成的文档来访问所有这些属性 虽然我知道DataLoadOptions可以指
  • 为什么 FTPWebRequest 或 WebRequest 通常不接受 /../ 路径?

    我正在尝试从 ftp Web 服务器自动执行一些上传 下载任务 当我通过客户端甚至通过 Firefox 连接到服务器时 为了访问我的目录 我必须指定如下路径 ftp ftpserver com AB00000 incoming files
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • 如何排列表格中的项目 - MVC3 视图 (Index.cshtml)

    我想使用 ASP NET MVC3 显示特定类型食品样本中存在的不同类型维生素的含量 如何在我的视图 Index cshtml 中显示它 an example 这些是我的代码 table tr th th foreach var m in
  • C# 搜索目录中包含字符串的所有文件,然后返回该字符串

    使用用户在文本框中输入的内容 我想搜索目录中的哪个文件包含该文本 然后我想解析出信息 但我似乎找不到该字符串或至少返回信息 任何帮助将不胜感激 我当前的代码 private void btnSearchSerial Click object
  • Silverlight Datagrid:在对列进行排序时突出显示整个列

    我的 Silverlight 应用程序中有一个 DataGrid 我想在对该列进行排序时突出显示整个列 它在概念上与上一个问题类似 Silverlight DataGrid 突出显示整列 https stackoverflow com qu
  • gdb查找行号的内存地址

    假设我已将 gdb 附加到一个进程 并且在其内存布局中有一个文件和行号 我想要其内存地址 如何获取文件x中第n行的内存地址 这是在 Linux x86 上 gdb info line test c 56 Line 56 of test c
  • 运行代码首先迁移更新数据库时出错

    我在迁移到数据库时遇到问题 并且似乎找不到我遇到的错误的答案 System MissingMethodException Method not found System Data Entity Migrations Builders Tab
  • 如何查明CONFIG_FANOTIFY_ACCESS_PERMISSIONS是否启用?

    我想利用fanotify 7 http man7 org linux man pages man7 fanotify 7 html我遇到的问题是在某些内核上CONFIG FANOTIFY ACCESS PERMISSIONS不起作用 虽然C
  • 以编程方式使用自定义元素创建网格

    我正在尝试以编程方式创建一个网格 并将自定义控件作为子项附加到网格中 作为 2x2 矩阵中的第 0 行第 0 列 为了让事情变得更棘手 我使用了 MVVM 设计模式 下面是一些代码可以帮助大家理解这个想法 应用程序 xaml cs base
  • Swagger 为 ASP.CORE 3 中的字典生成错误的 URL

    当从查询字符串中提取的模型将字典作为其属性之一时 Swagger 会生成不正确的 URL 如何告诉 Swagger 更改 URL 中字典的格式或手动定义输入参数模式而不自动生成 尝试使用 Swashbuckle 和 NSwag 控制器 pu
  • WPF/数据集:如何通过 XAML 将相关表中的数据绑定到数据网格列中?

    我正在使用 WPF DataSet 连接到 SQL Server Express XAML 和 C Visual Studio 2013 Express 我从名为 BankNoteBook 的现有 SQL Server Express 数据

随机推荐

  • 存储库应该实现 UnitOfWork 吗?

    在 DDD 模式中 工作单元应该与存储库耦合吗 我见过几个不同的示例 包括实现工作单元接口的存储库 实现工作单元本身行为的存储库 以及具有表示工作单元的属性以便可以在各个工作单元之间共享的存储库 UoW 生命周期内有多个存储库实例 对于后者
  • MBProgressHud 与 gif 图像

    我可以使用 gif 图像代替默认加载指示器吗 到目前为止我正在使用这段代码但没有得到任何结果 谁能建议这段代码有什么问题吗 import UIImage GIF h void showLoadingHUD NSString title se
  • 启用 mod_http2 并在conf文件中设置协议后,HTTP/2配置未运行[重复]

    这个问题在这里已经有答案了 在看似正确的安装之后 HTTP 2 似乎并未运行 我运行的是 CentOS 7 我安装了最新版本的 Apache 版本 httpd 2 4 35 5 el7 x86 64 并一直在尝试让 HTTP 2 正常工作
  • 自定义实体具体化

    有没有办法使用 EF6 注入自定义对象实例创建器 我需要做的是在矩阵化发生之前向 EF 提供实体实例 基本上我希望能够使用非无参数构造函数定义 POCO 实体 以便能够使用 DI 聚合 最终使用 EF 进行持久化 我知道我可以使用对象物化事
  • HTML 表单只读 SELECT 标签/输入

    根据 HTML 规范 selectHTML 中的标签没有readonly属性 只有一个disabled属性 因此 如果你想阻止用户更改下拉菜单 你必须使用disabled 唯一的问题是禁用的 HTML 表单输入不会包含在 POST GET
  • 如何使用多个其他列中的所有非 NA 值创建新列?

    我想创建一个列 d 其中包含其他列中的所有非 NA 值 我尝试了 ifelse 但无法弄清楚如何使其以正确的方式嵌套 以便也包含 c 列中的值 也许应该使用 ifelse 之外的其他东西 这是一个 虚拟 数据框 a lt c NA NA N
  • Chart.js 中的水平条形图

    我正在尝试使用 Chart js 2 3 0 绘制水平条形图 var MeSeContext document getElementById MeSeStatusCanvas getContext 2d var MeSeData label
  • 成员函数 .begin() 和 std::begin()

    调用成员函数 begin of std vector and std begin 右值会导致不同的输出 如以下测试所示 vector
  • 如何在 Python 2.7 中使用函数注释

    我在Ipython中看到了这个源代码 https github com ipython ipython blob e1e2e960315f0f98703f6b8b077b10c99d04d70a IPython core completer
  • 如何在 Android 的 Spinner View 中添加左侧可绘制元素

    您好 我正在尝试添加左侧可绘制对象Spinner但我没有找到任何属性 就像你在EditText using android drawableLeft drawable password drawable 有没有正确的方法可以实现相同的目标S
  • 如何在 Codeigniter 中播种数据

    迁移后如何在 CodeIgniter 中播种数据 迁移完成后 我想在表用户迁移后植入一些预定义用户 defined BASEPATH OR exit No direct script access allowed class Migrati
  • 如何在sql中获取上周的最后一天?

    如何在sql中获取上周的最后日期 我的意思是使用查询的上周日日期 无论实际的 DATEFIRST 设置如何 上周日都可以这样找到 SELECT DATEADD day 1 DATEPART weekday GETDATE DATEFIRST
  • 下载 csv 文件作为 AJAX 请求的响应

    我有一个名为 downloadUserAction 的端点 用于收集数据并下载 csv 文件 我面临的挑战是 使用单击功能上的按钮调用端点时不会下载该文件 但只有当我直接在浏览器中访问端点时才会下载该文件 经过研究 我发现不能使用 AJAX
  • 设置RatingBar Android中显示的星星数量下限

    使用android中的RatingBar小部件 您可以设置要显示的星星数量 但是有没有办法设置始终处于活动状态的星星数量的下限 举个例子 对一部电影或其他东西进行评分 但您不能提交 1 分的评分 如果严格来说这在框架中是不可能的 您可以使用
  • 如何将 Dialogflow v2 与 Angular 7 集成

    我正在使用 Dialogflow 构建一个聊天机器人 并使用内联编辑器将云函数部署到 firebase 然而 与 V1 相比 没有 javascript SDK 来与 API 交互 我被困住了 在文档中找不到任何有用的东西 您能否分享一些有
  • Xcode 6 / iOS 8 模拟器数据和 Bundle 文件夹脚本

    在 xcode 6 的最新更改中 app 文件和文档文件夹似乎不再驻留在 iPhone 模拟器目录中的同一文件夹中 以前 我们可以访问目录和 app 文件 Users me Library Application Support iPhon
  • JPA 提供者:为什么与非 PK 列的关系/FK 在 Hibernate 和 EclipseLink 中有效?

    我刚刚发现 JPA 不支持非主键列的正式关系 外键 看这里 JPA 规范是否允许引用非主键列 https stackoverflow com questions 5818373 jpa does the jpa specification
  • 在休眠实体和数据传输对象之间进行转换的好模式是什么?

    对于如何在 Hibernate 实体和 Web 服务返回的数据传输对象之间进行转换 我也有类似的问题和担忧 如本问题中所述 在 ejb3 中使用数据传输对象是否被认为是最佳实践 https stackoverflow com questio
  • 外键约束:何时使用 ON UPDATE 和 ON DELETE

    我正在使用 MySQL Workbench 设计我的数据库模式 这非常酷 因为您可以绘制图表并转换它们 P 不管怎样 我决定使用 InnoDB 因为它的外键支持 我注意到的一件事是 它允许您设置外键的 更新 和 删除 选项 有人可以在一个简
  • 您是否需要“取消连接”匿名函数/lambda

    我的理解是 在 C 中连接的任何事件处理程序都需要取消连接 Object myObject new Object myObject Event EventHandler Wired myObject Event EventHandler U