Один из способов - объявить переменную для хранения анонимного метода, который затем будет доступен внутри самого анонимного метода. Это работало для меня, потому что желаемое поведение заключалось в том, чтобы отказаться от подписки после обработки события.
Пример:
MyEventHandler foo = null;
foo = delegate(object s, MyEventArgs ev)
{
Console.WriteLine("I did it!");
MyEvent -= foo;
};
MyEvent += foo;