2016-08-31 12 views
-1

Итак, я просмотрел много мест, и то, что я пытаюсь сделать, не работает, хотя я, кажется, делаю то, что везде говорит. У меня есть следующие:Невозможно запустить мое событие из того же класса

private EventHandler statsUpdated; 
    public event EventHandler StatsUpdated 
    { 
     add 
     { 
      if (statsUpdated == null || !statsUpdated.GetInvocationList().Contains(value)) 
      { 
       statsUpdated += value; 
      } 
     } 
     remove 
     { 
      statsUpdated -= value; 
     } 
    } 

    protected virtual void OnStatsUpdated(EventArgs e) 
    { 
     EventHandler Handler = StatsUpdated; 
    } 

я нету начал делать больше для OnStatsUpdated метода все же, как линии в там erroring говорят, что StatsUpdated может быть только слева + = или - =. Тем не менее, я обращаюсь к нему из того же класса? Вышеприведенная прямая копия, они прямо сейчас находятся в коде.

Что я делаю неправильно?

+4

Последняя строка, она не должна быть: 'EventHandler Handler = statsUpdated;'? –

ответ

0

Я думаю, что это ошибка. Просто измените последнюю строку на EventHandler Handler = statsUpdated;

0

На самом деле вы не уволили событие. Огню, вы должны использовать

protected virtual void OnStatsUpdated(EventArgs e) 
{ 
    var handler = statsUpdated; 
    if (handler != null) 
     handler (this, e); 
} 

Если вы используете C# 6 вы можете упростить его

protected virtual void OnStatsUpdated(EventArgs e) 
{ 
    statsUpdated?.Invoke(this, e); 
}