Calling Application.ProcessMessages
se considera generalmente un olor código. Deje que su hilo principal permanezca inactivo si no tiene nada que hacer.
Si dirige una empresa y necesita que uno de sus trabajadores corra a la tienda y compre algunos de los suministros que tanto necesita, ¿podría caminar por la puerta hasta que regrese, o preferiría sentarse en su oficina y descanse y espérelo, y descubra que los suministros están aquí porque lo oye entrar por la puerta? De cualquier manera, tomará la misma cantidad de tiempo, pero la primera forma te desgastará las piernas.
De manera similar, en lugar de tener su UI mirando el hilo, haga que el hilo informe a la IU. Una forma de hacerlo es hacer que el subproceso use PostMessage
para enviar un mensaje personalizado al formulario que lo lanzó una vez que finaliza, y poner un controlador de mensajes en el formulario para responderlo.
Mason: Es posible que desee decir Application.ProcessMessages y no Application.PostMessages. – jachguate
Hay algunos casos en los que todo lo que tienes que hacer es esperar ...por ejemplo, para dejar que la aplicación termine. Si usa WaitFor en un hilo (ya conocido) de lazy-to-terminate ... un usuario (y Windows) puede pensar que no responde ... – jachguate
Mason, muchas gracias por su respuesta, ¿puede dar un ejemplo simple (código fuente) de tu respuesta? – Salvador