У меня есть случай, когда я хочу, чтобы данное событие выполнялось один раз и только один раз. Я пытаюсь сделать это таким образом, но у меня возникают проблемы (иначе я бы не стал спрашивать). Обратите внимание, что следующий код находится внутри функции, которая решает, что событие должно быть запущено.
EventHandler h = delegate(Object sender, EventArgs e) {
FiringControl.TheEvent -= h; // <-- Error, use of unassigned local variable "h"
// Do stuff
}
FiringControl.TheEvent += h;
Как правило, это должно работать из-за того, как область действия сохраняется для делегатов до тех пор, пока они не завершат работу, но, поскольку h
находится в процессе сборки, когда я пытаюсь его использовать, он все еще считается "неинициализированный", по-видимому.