Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 21695|Respuesta: 1

[Fuente] .net/c# Ten cuidado con los eventos que afecten a tu programa

[Copiar enlace]
Publicado en 21/9/2016 16:05:58 | | | |
Los eventos se cargan y ejecutan en el hilo principal, y si el primer evento en el hilo principal no se termina, llegas al segundo evento, igual que otros programas del hilo principal, esperas a que el anterior termine de procesarse antes de procesar el siguiente u otro programa u evento en el hilo principal.




Lo anterior es que yo mismo encapsulé un objeto, y en el objeto, encapsulé un evento yo mismo.

Proceso datos mediante el método de suscripción a eventos, como la parte de la anotación de imágenes,

Porque el evento al que me suscribí era un archivo txt de lectura, y mi archivo txt tenía 50.000 líneas, lo que provocó que el método del evento se activara 50.000 veces.

Luego, cuando ejecuté el programa, vi que mi interfaz estaba en estado de animación suspendida, y supe que debía de haber un problema ahí.

Al principio pensé que era la manipulación de los controles de la interfaz en el método lo que causaba una muerte falsa.

Luego, paso a paso, se descubrió que al añadir datos al conjunto, ya había entrado en un estado de animación suspendida.

¿¿¿por qué??? Finalmente, descubrí por internet que el evento está en el hilo principal y que si el primer evento no se procesa, bloqueará la ejecución del siguiente,

En general entendía lo que ordenaba, para ser franco, 50.000 eventos bloqueaban el programa, y entonces entraba en un estado de animación suspendida.

Solución:

Para algunos eventos simples, que no conducirán a la ejecución de un gran número de métodos de eventos, pueden escribirse directamente en el método de eventos.

Para un gran número de métodos de eventos llamados, espero que abras un hilo para gestionarlo, como: socket o httplistener, etc. (la cantidad de datos es pequeña y no puedes verla, una vez que la cantidad de datos es grande, jaja, morirá directamente)




Anterior:C# genera códigos de dirección de correo electrónico en masa
Próximo:Análisis de jugadores en la retransmisión en la nube, análisis de la interfaz Thunderbolt y QQ whirlwind
Publicado en 22/9/2016 9:23:17 |
Alguien publicó muy bien, soporte
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com