Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 21695|Répondre: 1

[Source] .net/c# Faites attention aux événements qui ralentissent votre programme

[Copié le lien]
Publié sur 21/09/2016 16:05:58 | | | |
Les événements sont chargés et exécutés sur le thread principal, et si le premier événement sur le thread principal n’est pas terminé, vous arrivez au second événement, comme les autres programmes du thread principal, attendez que le précédent termine son traitement avant de traiter le suivant, ou un autre programme ou événement dans le thread principal.




Ce qui précède, c’est que j’ai encapsulé un objet moi-même, et dans cet objet, j’ai encapsulé un événement moi-même.

Je traite les données dans la méthode de l’abonnement aux événements, comme la partie annotation d’image,

Parce que l’événement auquel je me suis abonné était un fichier text de lecture, et mon fichier txt comptait 50 000 lignes, ce qui a déclenché la méthode d’événement 50 000 fois.

Puis, en lançant le programme, j’ai constaté que mon interface était en animation suspendue, et j’ai su qu’il devait y avoir un problème.

Au début, je pensais que c’était la manipulation des contrôles de l’interface utilisateur dans la méthode qui causait la fausse mort.

Puis, étape par étape, on découvrit qu’en ajoutant des données à l’ensemble, il était déjà entré dans un état d’animation suspendue.

Pourquoi ??? Enfin, j’ai découvert sur internet que l’événement est sur le fil principal, et que si le premier événement n’est pas traité, il bloquera l’exécution du suivant,

Je comprenais généralement ce que j’avais ordonné, pour être franc, 50 000 événements ont provoqué le blocage du programme, puis je suis entré en animation suspendue.

Solution:

Pour certains événements simples, qui ne conduiront pas à l’exécution d’un grand nombre de méthodes d’événements, cela peut être écrit directement dans la méthode d’événement.

Pour un grand nombre de méthodes d’événements appelées, j’espère que vous ouvrirez un thread pour gérer cela, comme : socket ou httplistener, etc. (la quantité de données est faible et vous ne pouvez pas la voir, une fois que la quantité de données est grande, haha, elle mourra directement)




Précédent:C# génère des codes d’adresse e-mail en masse
Prochain:Analyse des joueurs de diffusion cloud, analyse des interfaces Thunderbolt et QQ whirlwind
Publié sur 22/09/2016 09:23:17 |
Quelqu’un a très bien posté, support
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com