Ninguna sobrecarga para el ‘método’ coincide con el delegado ‘System.EventHandler’

Estoy tratando de construir un progtwig que, una vez que se haga clic en el botón, cada 5 segundos realice la función (OnTimed).

A continuación se muestra el código hasta el momento:

private void bntCapture_Click(object sender, RoutedEventArgs e) { DispatcherTimer t1 = new DispatcherTimer(); t1.Interval = TimeSpan.FromMilliseconds(5000); t1.IsEnabled = true; t1.Tick += new EventHandler(OnTimed); t1.Start(); } void OnTimed(object sender, ElapsedEventArgs e) { imgCapture.Source = imgVideo.Source; System.Threading.Thread.Sleep(1000); Helper.SaveImageCapture((BitmapSource)imgCapture.Source); } 

Cuando ejecuto el código, muestra el error:

“Ninguna sobrecarga para ‘método’ coincide con el delegado ‘System.EventHandler’

La firma del método del controlador de eventos no es compatible con el tipo de delegado.

Los suscriptores al evento DispatcherTimer.Tick deben ser del tipo de delegado EventHandler , que se declara como:

 public delegate void EventHandler(object sender, EventArgs e); 

Intenta esto en su lugar:

 void OnTimed(object sender, EventArgs e) { ... } 

Si usa Windows Phone 8.1, necesita lo siguiente

 private void OnTimed(object sender, object e) { // You Code Here } 

El método OnTimed tiene que declararse así:

  private void OnTimed(object sender, EventArgs e) { // Do something } 

Dispatcher.Tick es simple EventHandler:

evento público EventHandler Tick;

Así que los parámetros de EventHandler deberían ser:

 void OnTimed(object sender, EventArgs e) 

No la

 void OnTimed(object sender, ElapsedEventArgs e) 

Parece que has pasado por alto un poco el evento System.Timers.Timer.Elapsed que es:

 public event ElapsedEventHandler Elapsed public delegate void ElapsedEventHandler( Object sender, ElapsedEventArgs e ) 

Sé que puede ser un poco tarde, pero solo quería lanzar un poco más para cualquier persona con este problema:

 timer.Tick += new EventHandler(Method); public void Method(object sender, EventArgs e) { //Do Something } 

resuelve el problema.

También se puede escribir así: timer.Tick + = Method;

 timer.Tick += Method; public void Method(object sender, EventArgs e) { //Do Something } 

¡Espero eso ayude!

En mi caso, estaba usando un control de formas personalizadas para el reconocimiento de huellas digitales digitalPersona.

Cuando traté de sobrecargar el método ‘OnComplete’, surgiría ‘No sobrecargar …’

 private void FingerprintVerificationControl_OnComplete(object control, DPFP.FeatureSet featureSet, DPFP.Gui.EventHandlerStatus eventHandlerStatus) 

Esto es lo que parecía.

Revisé el ensamblaje y noté que el tercer parámetro tenía la palabra clave ‘ref’ adjunta. Lo agregué en mi código y funcionó:

 private void FingerprintVerificationControl_OnComplete(object control, DPFP.FeatureSet featureSet, ref DPFP.Gui.EventHandlerStatus eventHandlerStatus)