Colección de citas famosas - Slogan de motivación - Cuando uso la interfaz de operación multiproceso de C#, la interfaz no se bloquea cuando uso Invoke, pero ¿por qué se bloquea cuando uso BeginInvoke?

Cuando uso la interfaz de operación multiproceso de C#, la interfaz no se bloquea cuando uso Invoke, pero ¿por qué se bloquea cuando uso BeginInvoke?

Esto involucra el mecanismo del formulario winform para enviar mensajes cíclicos. A continuación se proporciona un enlace a una explicación detallada. Si está interesado, puede echar un vistazo.

En cuanto a este problema, puedes entenderlo de esta manera:

Invoke necesita esperar a que se complete el método SetValue antes de ingresar al siguiente ciclo.

BeginInvoke notifica que se va a ejecutar el método SetValue, pero vuelve a entrar en el bucle sin esperar a que se ejecute SetValue.

Puedes agregar un Thread.Sleep(50) después de BeginInvoke; de ​​esta manera no se atascará.

La interfaz de la tarjeta BeginInvoke es diferente de la incapacidad del hilo secundario para acceder a la interfaz de la tarjeta del hilo principal. La primera está demasiado ocupada y el segundo es demasiado vago para actualizar la interfaz mientras espera.

Dirección del enlace: blogs.com/fuchongjundream/p/3939298.html