У меня есть статическое событие в статическом методе, к которому я временно присоединяюсь, так как я не хочу, чтобы оно зависало в памяти или попадало в ситуацию, когда я запускаю два обработчика событий, если я вызываю его дважды.
Я мало что могу сказать о том, должны ли они быть статичными или нет, и предпочел бы не отвечать за обсуждение / рефакторинг.
Первоначально я делал это так
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, как я могу очистить и отсоединиться от статического события?