I have a static event in a static method that I am temporarily attaching to, as I don't want it to hang around in memory, or get in a situation where I am firing two event handlers if I call it twice.
I have little say in whether these should be static or not, and would prefer not to have the discussion / refactor responsibility.
Initially I was doing it like this
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
}
}
This has been working fine, but I would like to handle the event inline, to be consistent with another event in the method, as well as setting a cancel boolean that is local to the function and being used by the other 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
{
//???
}
}
My question is, in scenario 2, how can I clean up and detach from the static event?