如何退订的一类Dispose方法匿名函数? [英] How to unsubscribe an anonymous function in Dispose method of a class?

查看:232
本文介绍了如何退订的一类Dispose方法匿名函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个A级......在它的构造函数...我分配一个匿名函数来Object_B的事件处理程序。



我如何删除(退订)的从A类的Dispose方法?



任何帮助,将不胜感激!谢谢



 公共类
{

公开发行A()
{

B_Object.DataLoaded + =(发件人,E)=>
{
线1
线2
线3
线4
};
}

公共覆盖无效的Dispose()
{
//我如何退订上述认购匿名函数?
}
}


解决方案

您不能,基本上是这样。它要么进入一个方法,或者使用一个成员变量保持委托后:

 公共类 - 答:IDisposable的
{
私人只读事件处理程序处理;

公开发行A()
{
=处理器(发件人,E)=>
{
线1
线2
线3
线4
};

B_Object.DataLoaded + =处理程序;
}

公众覆盖无效的Dispose()
{
B_Object.DataLoaded - =处理程序;
}
}


I have a Class A...in it's constructor...I am assigning an anonymous function to Object_B's eventHandler.

How do I remove (unsubscribe) that from Dispose method of class A ?

Any help would be appreciated ! Thanks

Public Class A
{

public A()
 {

 B_Object.DataLoaded += (sender, e) =>
                {
                   Line 1
                   Line 2
                   Line 3
                   Line 4
                };
 }

Public override void Dispose()
{
  // How do I unsubscribe the above subscribed anonymous function ?
}
}

解决方案

You can't, basically. Either move it into a method, or use a member variable to keep the delegate for later:

public class A : IDisposable
{
    private readonly EventHandler handler;

    public A()
    {
        handler = (sender, e) =>
        {
           Line 1
           Line 2
           Line 3
           Line 4
        };

        B_Object.DataLoaded += handler;
     }

     public override void Dispose()
     {
        B_Object.DataLoaded -= handler;
     }
}

这篇关于如何退订的一类Dispose方法匿名函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆