duplicados posibles:
Must every BeginInvoke be followed by an EndInvoke?
Is EndInvoke() optional, sort-of optional, or definitely not optional?Invocación asincrónica: ¿se requiere EndInvoke?
Tengo una aplicación multiproceso, y uno de los hilos secundarios tiene que conseguir un poco de código a ejecutar en el hilo principal una vez cada un par de minutos. No hay ningún valor devuelto, y al segundo subproceso no le importa si genera alguna excepción o no se ejecuta.
Hasta ahora, he estado obteniendo que ejecute el código a través de Form.Invoke
, pero a veces lleva mucho más tiempo de lo habitual (un par de segundos) y bloquea el hilo hasta que se completa. Necesito el segundo hilo para poder continuar la ejecución sin estancar durante varios segundos.
BeginInvoke
suena como que haría el trabajo muy bien, pero realmente no tengo ningún lugar para llamar al EndInvoke
, ya que no quiero esperar o obtener un valor de retorno. Y teniendo en cuenta que el código invocado implica un montón de llamadas nativas, no estoy seguro de si es una buena idea no EndInvoke
.
¿Tengo que llamar al EndInvoke
, o hay alguna otra forma de que el código se ejecute en el hilo principal de forma asíncronamente que debería estar utilizando en su lugar?
Gracias =)
Impresionante, así que puedo cambiar mi 'Invoke's' a BeginInvoke's sin explotar nada. –