使c#/ wpf事件只触发一次?

时间:2010-06-03 17:25:30

标签: c# wpf delegates

我有一个案例,我希望给定的事件执行一次,并且只执行一次。我试图这样做,但我有问题(否则我不会问)。请注意,以下代码位于决定需要触发事件的函数内部。

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

一般情况下,这应该有效,因为代表保留范围的方式直到它们完成运行之后,但是,因为当我尝试使用它时h正在构建过程中,它仍然被认为是显然是“未初始化”。

1 个答案:

答案 0 :(得分:3)

您可以先设置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;

但你确定这是正确的方法吗?你想要做什么呢?