如何取消订阅使用 lambda 表达式的事件?

2023-12-26

我有以下代码让 GUI 响应集合中的更改。

myObservableCollection.CollectionChanged += ((sender, e) => UpdateMyUI());

首先,这是一个好方法吗?

第二:取消订阅此活动的代码是什么?是否相同,但带有 -= (然后又是完整的匿名方法)?


首先...是的,这是一种很好的方法,它干净、小巧,易于阅读和理解...当然需要注意的是“除非您以后想取消订阅”。

我相信乔恩·斯基特 https://stackoverflow.com/questions/183367/unsubscribe-anonymous-method-in-c/183380#183380之前指出 “当涉及到使用匿名方法创建的委托的等效性时,规范明确不保证任何一种行为。”

因此,如果您稍后需要取消订阅该事件,您最好实际创建一个委托实例,以便稍后可以保留该引用。

var myDelegate = delegate(sender, e){UpdateMyUI()};

myObservableCollection.CollectionChanged += myDelegate;

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

如何取消订阅使用 lambda 表达式的事件? 的相关文章

  • ASP.NET 如何在 Web API 中读取多部分表单数据?

    我将多部分表单数据发送到我的 Web API 如下所示 string example my string HttpContent stringContent new StringContent example HttpContent fil
  • 基于多线程的 RabbitMQ 消费者

    我们有一个 Windows 服务 它监听单个 RabbitMQ 队列并处理消息 我们希望扩展相同的 Windows 服务 以便它可以监听 RabbitMQ 的多个队列并处理消息 不确定使用多线程是否可以实现这一点 因为每个线程都必须侦听 阻
  • 弹出 x86 堆栈以访问函数 arg 时出现分段错误

    我正在尝试链接 x86 程序集和 C 我的C程序 extern int plus 10 int include
  • 如何进行Visual Studio格式字典初始化?

    所有 Visual Studio 也包括 2012 不格式化以下内容 messageProcessor new Dictionary
  • 使用正则表达式解析日志文件

    我目前正在为我们的内部日志文件 由 log4php log4net 和 log4j 生成 开发一个解析器 到目前为止 我有一个很好的正则表达式来解析日志 除了一个烦人的一点 一些日志消息跨越多行 我无法正确匹配 我现在的正则表达式是这样的
  • 启动 onclick 比使用 document.onload 更快

    我有带有链接的 html 页面 我想在其中附加一个功能onclick事件 一种方法当然是 a href save php Save a 但我知道这不是最佳做法 所以我反而等待window onload 循环遍历链接并将保存功能附加到链接re
  • 公共基类打破了元组的空基类优化

    gcc 4 7 1 对元组进行空基类优化 我认为这是一个非常有用的功能 然而 这似乎有一个意想不到的限制 include
  • 无法在 Visual Studio 和 vcpkg 中构建 cmake 项目(致命错误 C1083)

    我今天安装了vcpkg 启用了与Visual Studio的集成 即 vcpkg集成安装 并开始安装库 我基本上安装了 cpprestsdk 并触发了 boost 库的安装 然后我在 Visual Studio CMake 中打开该项目 当
  • Moq - 是否可以在不使用 It.IsAny 的情况下设置模拟

    我一直使用 Moq 进行单元测试 有时我会嘲笑有很多参数的方法 想象一下这样的方法 public class WorkClient public void DoSomething string itemName int itemCount
  • VS C# 中的依赖地狱,找不到依赖项

    我创建了一个图表 C 库 我们称之为chartlibrary 它本身依赖于多个第三方 dll 文件 在另一个可执行项目中 我们称之为chartuser 我参考了chartlibrary项目 两个项目位于 Visual Studio 中的同一
  • 这个元组创建习惯有名字吗?

    On the 增加邮件列表 http lists boost org Archives boost 2014 06 214213 php LouisDionne 最近发布了以下创建类似元组的实体的巧妙技巧 include
  • 多个包含带有变量定义的头文件

    我只是构建一个简单的 C 项目 代码如下所示 head h ifndef HEAD H define HEAD H int my var 100 endif src1 cpp include head h src2 cpp include
  • C# 中的类和模块有什么用

    有人可以解释一下类和模块之间的区别吗 你什么时候使用其中一种而不是另一种 我正在使用 C 更新 我的意思是相当于 VB 模块的 C 版本 这在很大程度上取决于您所指的 模块 Visual Basic 的模块 C 中没有真正等效的 VB Ne
  • C# 从今天起 30 天

    我需要我的应用程序从今天起 30 天后过期 我会将当前日期存储在应用程序配置中 如何检查应用程序是否已过期 我不介意用户是否将时钟调回来并且应用程序可以正常工作 用户太愚蠢而不会这样做 if appmode Trial string dat
  • 没有 FPU 的处理器中的浮点计算

    是否可以在没有浮点单元的嵌入式处理器中执行浮点运算 是的 您只需要在软件中完成即可 你的编译器可能会提供支持 http gcc gnu org onlinedocs gccint Soft float library routines ht
  • 智能感知不显示评论

    如果我在 Visual Studio 2010 中输入类似的内容数据集1 我得到所有可用方法和属性的列表 智能感知 这很好用 但是 如果我在此列表中选择一个方法或属性 我不会得到 if 的描述 例如 如果我有类似的东西 public cla
  • 在 C++ 中什么时候首选传递指针而不是引用传递?

    我可以想象一种情况 其中输入参数可以为 NULL 以便首选传递指针而不是传递引用 有人可以添加更多案例吗 在传递的对象实际上将被修改的情况下 有些人更喜欢传递指针 当对象通过引用传递时 它们使用 pass by const referenc
  • 为什么 getch 不可移植?

    是什么使得 getch 本质上无法作为标准 C 函数包含在内 对于控制台界面来说 它是如此直观和优雅 如果没有它 要求输入单个字符总是会产生误导 因为用户可以输入多个键 更糟糕的是 您经常需要确保在读取控制台输入后清除标准输入 这甚至不是作
  • SQL Server CE 不兼容的数据库版本

    我有一个 SQL Server CE 4 0 数据库 sdf文件 当我尝试从我的应用程序 WPF 对数据库进行查询时 出现以下错误 数据库版本不兼容 如果这是兼容文件 请运行修复 其他情况请参考文档 数据库版本 4000000 请求的版本
  • 使用 List.Contains 方法为 LINQ 构建表达式树

    Problem 我正在重构一些LINQ查询我们的 Web 应用程序中的多个报告 并且我尝试将一些重复的查询谓词移至它们自己的中IQueryable扩展方法 以便我们可以将它们重新用于这些报告以及将来的报告 正如您可能推断的那样 我已经重构了

随机推荐

  • PowerShell 脚本返回意外输出(随机数)

    Problem我正在 PowerShell 中编写一个脚本 将文件上传到 http 服务器 上传成功完成 但执行时在控制台中返回一堆数字 远远超过下面显示的数字 Output 这是我正在运行的脚本 Param Parameter Manda
  • 在 Prolog 中解决文本逻辑难题 - 查找生日和月份

    我正在阅读 7天7种语言 一书 并且已经读到了Prolog章节 作为学习练习 我试图解决一些文本逻辑难题 谜题如下 五姐妹的生日都在不同的月份 并且各自在一周的不同日期 使用下面的线索 确定每个姐妹的生日是在月份和星期几 宝拉出生于三月 但
  • JS:如何检查按钮是否被禁用?

    我想检查按下或未按下的按钮 我怎样才能做到呢 我已经尝试过这样做 但它不起作用 这是我的代码
  • 现在允许重新定义 constexpr 静态数据成员吗? (但不是内联常量)?

    以下代码在 c 14 中的 gcc 和 clang 下均无法编译 但在 c 1z 中编译成功 struct Cls static constexpr int N 0 constexpr int Cls N constexpr int Cls
  • 您将如何在这里使用敏捷? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我是敏捷的大力支持者 但我的一个朋友 他还不知道敏捷 他是管理类型 问我如何规划和开发一个复杂的分布式项目 其中包含数据库层 通信层层 接口以及
  • 使用 Go 获取 Python 版本

    我正在尝试使用 Go 获取我的 Python 版本 import log os exec strings func verifyPythonVersion err exec LookPath python if err nil log Fa
  • 将 dll 与 node-ffi 一起使用

    我正在使用 node ffi 访问我购买的自定义硬件提供的 dll 该 dll 使用设备驱动程序来执行操作 他们不提供 dll 文档 但他们有一个 c 中的示例应用程序 该 dll 在 c 中使用像这样 DllImport POS CIDR
  • 我对 REST 有什么不理解的地方?

    我正在构建一个框架 并希望使用它进行构建的开发人员能够允许其部分内容与其他站点共享数据并允许其他站点添加 编辑 删除数据 例如 如果有人制作了一个包含书评 作者 引言 代码示例 评论等的网站 那么开发人员可以制作例如 书评 对于其他网站来说
  • 处理 django 包含模板标签中的请求

    我是 Django 新手 正在尝试将上传文件表单放入包含标签中 所以我可以在各种模板中使用它 我创建了以下包含标签 upload files py register inclusion tag upload form html def up
  • PrimeFaces p:fileUpload 不调用方法

    我正在尝试使用 PrimeFaces
  • MVVM 是否违反了 DRY?

    看来我制作的 ViewModels 看起来可疑地像其他班级一样而且它们似乎需要大量的代码重复 例如在当前的项目中我有 SmartForm Model that represents a data form to fill in has pr
  • 将本地图片上传到tinyMCE

    tinyMCE有一个插入图像按钮 但如何处理其功能 请给出一些代码 我已经对 pavanastechie 编写的代码投了赞成票 但最终我重写了很多次 这是一个更短的版本 可能对某些人有价值 tinymce init toolbar imag
  • 如何在Python中创建链表

    我正在尝试解决 python 中的链表编码挑战 我只给出了以下课程来创建链接列表 Definition for singly linked list class ListNode object def init self x self va
  • 单击小部件时播放声音

    这是我的代码 它打开主要活动 但我似乎找不到一种方法来让小部件播放声音 我尝试过了 向小部件添加一个按钮 不起作用 add an OnClickListener到主要活动 有效 但它打开主要活动 我只想要声音而不是活动 编写一个新方法来播放
  • 了解 ASP.NET WebForms 中控件处于生命周期的哪个阶段

    从控件的外部 是否可以找出特定控件或页面处于页面生命周期的哪个阶段 初始化 加载 预渲染等 例如 在伪代码中 if myControl CurrentLifeCycle Lifecycle Init do something 恐怕没有内置函
  • Qt QSqlQuery 准备和bindValue 不工作

    我在准备和绑定值时遇到问题 db open QSqlQuery q q prepare SELECT id malade nom prenom FROM Malade WHERE nom LIKE p OR prenom f q bindV
  • 如何使用 SetWindowsHookEx 和 WH_KEYBOARD 挂钩外部进程

    我试图挂钩例如记事本但没有成功 制作一个全局钩子似乎效果很好 在 XP SP2 上测试 编辑 修改后的代码现在可以使用 MyDLL代码 include
  • 如何以编程方式打印各种文件类型

    我正在编写一个应用程序 它执行一些测试并生成许多不同的报告 这些可以是标签 最终客户的 PDF 维修部门的 PDF XML 文件等的任意组合 根据报告类型 我需要将文件发送到文件系统或多种不同打印机 A4 标签等 之一 理想情况下不应该有弹
  • F# 是否具有与 C# 的“不安全”块等效的语法

    大量的数组边界检查会降低速度 对于二维数组尤其如此 有没有办法在 F 中编写不安全的代码块 我不是一个F http cs hubfs net blogs f team archive 2006 08 15 506 aspx程序员 但据我所知
  • 如何取消订阅使用 lambda 表达式的事件?

    我有以下代码让 GUI 响应集合中的更改 myObservableCollection CollectionChanged sender e gt UpdateMyUI 首先 这是一个好方法吗 第二 取消订阅此活动的代码是什么 是否相同 但