Events worden geladen en uitgevoerd op de hoofdthread, en als het eerste event in de hoofdthread niet is afgerond, kom je bij het tweede event, net als bij andere programma's in de hoofdthread, wacht je tot het vorige klaar is met verwerken voordat je het volgende of een ander programma of event in de hoofdthread verwerkt.
Bovenstaande is: ik heb zelf een object ingekapseld, en in het object heb ik zelf een gebeurtenis gekapseld.
Ik verwerk data op de manier waarop ik me abonner op gebeurtenissen, zoals het beeldannotatiegedeelte,
Omdat het event waarop ik me abonneerde een read txt-bestand was, en mijn txt-bestand 50.000 regels had, waardoor de event-methode 50.000 keer werd geactiveerd.
Toen ik het programma draaide, ontdekte ik dat mijn interface in een staat van gesuspendeerde animatie verkeerde, en ik wist dat er een probleem moest zijn.
Ik dacht eerst dat het manipuleren van de UI-besturing op deze manier was die de nep-dood veroorzaakte.
Stap voor stap bleek dat bij het toevoegen van data aan de set deze al in een toestand van suspensie was gegaan.
Waarom??? Uiteindelijk kwam ik via internet erachter dat het evenement in de hoofdthread staat, en als het eerste evenement niet wordt verwerkt, blokkeert het de uitvoering van het volgende evenement.
Ik begreep over het algemeen wat ik had besteld, om het maar bot te zeggen: 50.000 gebeurtenissen zorgden ervoor dat het programma werd geblokkeerd, waarna ik in een toestand van gesuspendeerde animatie terechtkwam.
Oplossing:
Voor sommige eenvoudige gebeurtenissen, die niet leiden tot de uitvoering van een groot aantal gebeurtenismethoden, kunnen ze direct in de gebeurtenismethode worden geschreven.
Voor een groot aantal event methods die worden aangeroepen, hoop ik dat je een thread opent om ermee om te gaan, zoals: socket of httplistener, enzovoort (de hoeveelheid data is klein en je kunt hem niet zien, zodra de hoeveelheid data groot is, haha, sterft hij direct uit)
|