Перевызов событий? - C#
Формулировка задачи:
всем привет, имеется данный пример:
Зачем тут метод InvokeEvent, который перевызывает событие myEvent?
Зачем вообще перевызывать событие? Почему не вызвать его "напрямую" - как метод
public delegate void EventDelegate();
public class MyClass
{
public event EventDelegate myEvent = null;
public void InvokeEvent()
{
myEvent.Invoke();
}
}
class Program
{
// Методы обработчики события.
static private void Handler1()
{
Console.WriteLine("Обработчик события 1");
}
static private void Handler2()
{
Console.WriteLine("Обработчик события 2");
}
static void Main()
{
MyClass instance = new MyClass();
// Присоединение обработчиков событий. (Подписка на событие)
instance.myEvent += new EventDelegate(Handler1);
instance.myEvent += Handler2;
// Метод который вызывает событие.
instance.InvokeEvent();
Console.WriteLine(new string('-', 20));
// Открепляем Handler2().
instance.myEvent -= new EventDelegate(Handler2);
instance.InvokeEvent();
// Delay.
Console.ReadKey();
}
}Решение задачи: «Перевызов событий?»
textual
Листинг программы
protected virtual void OnTestEvent(EventArgs e) {
var testEvent = TestEvent;
if (testEvent!= null) {
testEvent(this, e);
}
}