代码之家  ›  专栏  ›  技术社区  ›  Donnie

只触发一次c/wpf事件?

  •  1
  • Donnie  · 技术社区  · 14 年前

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

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

    一般来说,这应该是有效的,因为在代理运行完成之前,范围是为代理保留的,但是,由于 h 当我试图使用它时,它仍被认为是“未初始化”的,显然。

    1 回复  |  直到 14 年前
        1
  •  3
  •   Donnie    14 年前

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

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