我在我临时附加的静态方法中有一个静态事件,因为我不希望它在内存中徘徊,或者如果我调用它两次,我会触发两个事件处理程序。
对于这些是否应该是静态的,我几乎没有发言权,并且不希望承担讨论/重构的责任。
最初我是这样做的
public static void DoSomething()
{
try
{
MyStaticClass.MyEvent +=new EventHandler<HandledEventArgs>(MyStaticClass_HandleMe);
... //Doing Stuff
}
finally
{
MyStaticClass.MyEvent -=new EventHandler<HandledEventArgs>(MyStaticClass_HandleMe);//Detach from event
}
}
这一直工作正常,但我想内联处理事件,以与方法中的另一个事件保持一致,以及设置一个函数本地并被另一个事件使用的取消布尔值。
public static void DoSomething()
{
try
{
bool cancel = false;
MyStaticClass.MyEvent +=new EventHandler<HandledEventArgs>(delegate(object sender, HandledEventArgs e)
{
cancel = true;
})
... //Doing Stuff dependent on cancel = false;
}
finally
{
//???
}
}
我的问题是,在场景 2 中,如何清理并脱离静态事件?