// este método solamente dispara el evento Finished con sus argumentos (sender, e) // se declara protected para que pueda heredarse como private y virtual para poder hacer override en la clase hija protected virtual void OnFinished(ProcesoFinishedEventArgs e) { EventHandler <ProcesoFinishedEventArgs> handler = Finished; if (handler != null) { handler(this, e); } }
// metodo que ejecuta el proceso de 5 segundos asíncronamente public async void Run(int value) { // Tarea paralela que espera a q termine (await) y devuelve un Object var ret = await Task <Object> .Run(() => LongOperation(value)); // final del proceso, recogemos argumentos y disparamos el evento Finished (noticamos que hemos acabado) ProcesoFinishedEventArgs args = new ProcesoFinishedEventArgs(); args.Result = (int)ret; OnFinished(args); }
private void Proceso_Finished(object sender, ProcesoFinishedEventArgs e) { lblResult.Text = e.Result.ToString(); }