public event EventHandler WorkComplete; //базовый тип делегата для ивентов public virtual void DoWork(int hours, WorkType workType) { for (int i = 0; i < hours; i++) { var e = new WorkPerformedEventArgs { Hours = i + 1, WorkType = workType }; //OnWorkPerformed(this, i + 1, workType); OnWorkPerformed(this, e); } OnWorkComplete(this, EventArgs.Empty); }
public static void WorkPerformed3(object sender, WorkPerformedEventArgs e) { Console.WriteLine($"3: Type of work {e.WorkType} done in {e.Hours} hours"); }
protected virtual void OnWorkPerformed(object sender, WorkPerformedEventArgs e) { WorkPerformed?.Invoke(this, e); //? означает if (WorkPerformed != null) }