如何退订的一类Dispose方法匿名函数? [英] How to unsubscribe an anonymous function in Dispose method of a class?
本文介绍了如何退订的一类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屋!
查看全文