public void ATrabajar() { int i; PorcentajeHechoEventArgs ph = new PorcentajeHechoEventArgs(); for (i = 0; i < 500; i++) { System.Threading.Thread.Sleep(1); //Hacemos el trabajo switch (i) { case 125: PocentajeHecho = 25; ph.PorcentajeHecho = this.PocentajeHecho; OnPorcentajeHecho(ph); break; case 250: PocentajeHecho = 50; ph.PorcentajeHecho = this.PocentajeHecho; OnPorcentajeHecho(ph); break; case 375: PocentajeHecho = 75; ph.PorcentajeHecho = this.PocentajeHecho; OnPorcentajeHecho(ph); break; } } }
protected virtual void OnPorcentajeHecho(PorcentajeHechoEventArgs e) { /*los eventos siempre envian el remitente como primer parametro, y luego la informacion * del parametro en e*/ callback?.Invoke(this, e); }
/*puede ser privada puesto que la invocacion se hace desde esta misma clase*/ private void InformeAvance2(object sender, PorcentajeHechoEventArgs ph) { string str = String.Format("Ya llevamos el {0}", ph.PorcentajeHecho); Console.WriteLine(str); }