Сделать событие c # / wpf только один раз? - PullRequest
1 голос
/ 03 июня 2010

У меня есть случай, когда я хочу, чтобы данное событие выполнялось один раз и только один раз. Я пытаюсь сделать это таким образом, но у меня возникают проблемы (иначе я бы не стал спрашивать). Обратите внимание, что следующий код находится внутри функции, которая решает, что событие должно быть запущено.

EventHandler h = delegate(Object sender, EventArgs e) {
  FiringControl.TheEvent -= h; // <-- Error, use of unassigned local variable "h"
  // Do stuff
}
FiringControl.TheEvent += h;

Как правило, это должно работать из-за того, как область действия сохраняется для делегатов до тех пор, пока они не завершат работу, но, поскольку h находится в процессе сборки, когда я пытаюсь его использовать, он все еще считается "неинициализированный", по-видимому.

1 Ответ

3 голосов
/ 03 июня 2010

Вы могли бы сначала установить h = null, а затем установить его равным чему-то еще? Как это?

EventHandler h = null;

h = delegate(Object sender, EventArgs e) {
  FiringControl.TheEvent -= h; // <-- Error, use of unassigned local variable "h"
  // Do stuff
}

FiringControl.TheEvent += h;

Но вы уверены, что это правильный подход? Что вы пытаетесь сделать в целом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...