c# - 如何取消注册我的 Lambda 回调?

标签 c# events lambda callback

如果我创建这样的 lambda 回调:

var someInstance = new SomeObject();

someInstance.Finished += (obj, args) =>
{
      // Do something

      // Deregister here
};

someInstance.DoAction();

我如何取消注册回调作为实际处理程序代码的一部分?这种模式将是理想的,因为我可以确保它尽快发布。

我见过类似的问题,但没有看到直接解决此类示例的问题。

最佳答案

用类似的东西,

var someInstance = new SomeObject();

EventHandler myDelegate = null;
myDelegate = (obj, args) =>
{
      // Do something

      // Deregister here
      someInstance.Finished -= myDelegate;
};
someInstance.Finished += myDelegate;

someInstance.DoAction();

关于c# - 如何取消注册我的 Lambda 回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5797330/

相关文章:

Java 8 Streams : multiple filters vs. 复杂情况

C# TimeZoneInfo 将 GMT 时区名称转换为系统时区

c# - 尝试从 ListBox 对象转换为 MyListBox 时出现 invalidcastException : ListBox object in WPF

javascript - 页面关闭后向 node.js 发送消息

java - 如何使嵌套 Swing 面板深处的按钮获得 "keyboard focus"?

javascript - 使用 jQuery,是否可以监视 DOM 元素并在每次对其执行操作时进行报告?

java - 卡夫卡流: How to collect pairs of messages and write to a new topic

c# - 从列表中删除项目的最佳方法

c# - 如何将 CSS 应用于带母版页的导航栏?

c# - MVVM基金会: Why return ICommand when its defined as RelayCommand