Events indlæses og køres på hovedtråden, og hvis den første hændelse i hovedtråden ikke er færdig, kommer du til den anden begivenhed, ligesom andre programmer i hovedtråden, vent til den forrige er færdig med behandlingen, før du behandler det næste eller et andet program eller event i hovedtråden.
Ovenstående er, at jeg selv indkapslede et objekt, og i objektet indkapslede jeg selv en begivenhed.
Jeg behandler data ved at abonnere på begivenheder, såsom billedannotationsdelen,
Fordi den begivenhed, jeg abonnerede på, var en read txt-fil, og min txt-fil havde 50.000 linjer, hvilket fik event-metoden til at blive udløst 50.000 gange.
Da jeg så kørte programmet, opdagede jeg, at mit interface var i en tilstand af suspenderet animation, og jeg vidste, at der måtte være et problem der.
Jeg troede først, det var manipulationen af UI-kontrollerne på den måde, der forårsagede falsk død.
Derefter blev det trin for trin opdaget, at når data blev tilføjet til sættet, var det allerede gået ind i en tilstand af suspenderet animation.
Hvorfor??? Endelig fandt jeg ud af på internettet, at begivenheden er i hovedtråden, og hvis den første begivenhed ikke bliver behandlet, vil den blokere udførelsen af den næste begivenhed,
Jeg forstod generelt, hvad jeg beordrede, for at sige det ligeud: 50.000 hændelser fik programmet blokeret, og så gik jeg ind i en tilstand af suspenderet animation.
Opløsning:
For nogle simple begivenheder, som ikke vil føre til udførelse af et stort antal hændelsesmetoder, kan de skrives direkte ind i hændelsesmetoden.
For et stort antal event-metoder kaldt, håber jeg, du vil åbne en tråd for at håndtere det, såsom: socket eller httplistener osv. (mængden af data er lille, og du kan ikke se den, når datamængden er stor, haha, så dør den direkte)
|