Įvykiai įkeliami ir vykdomi pagrindinėje gijoje, o jei pirmasis pagrindinės gijos įvykis nėra baigtas, jūs ateisite į antrąjį įvykį, kaip ir kitos pagrindinės gijos programos, palaukite, kol ankstesnė baigs apdoroti, prieš apdorodami kitą ar kitą programą ar įvykį pagrindinėje gijoje.
Tai, kas išdėstyta aukščiau, yra tai, kad aš pats inkapsuliavau objektą, o objekte pats įrašiau įvykį.
Apdoroju duomenis prenumeruodamas įvykius, pvz., vaizdo anotacijos dalį,
Kadangi įvykis, kurį užsiprenumeravau, buvo perskaitytas txt failas, o mano txt failas turėjo 50 000 eilučių, todėl įvykio metodas buvo suaktyvintas 50 000 kartų.
Tada, kai paleidau programą, pastebėjau, kad mano sąsaja buvo sustabdytos animacijos būsenoje ir žinojau, kad ten turi būti problema.
Iš pradžių maniau, kad tai buvo manipuliavimas vartotojo sąsajos kontrolės metodas, kuris sukėlė netikrą mirtį.
Tada žingsnis po žingsnio buvo nustatyta, kad pridedant duomenis prie rinkinio, jis jau buvo perėjęs į sustabdytos animacijos būseną.
kodėl??? Galiausiai iš interneto sužinojau, kad įvykis yra pagrindinėje gijoje, o jei pirmasis įvykis nebus apdorotas, jis blokuos kito įvykio vykdymą,
Apskritai supratau, ką įsakiau, tiesiai šviesiai tariant, 50 000 įvykių užblokavo programą, o tada įėjau į sustabdytos animacijos būseną.
Sprendimas:
Kai kuriems paprastiems įvykiams, kurie nesukels daugybės įvykių metodų, galima įrašyti tiesiai į įvykio metodą.
Dėl daugelio įvykių metodų vadinamas, tikiuosi, kad jums bus atidaryti giją, kad su juo susidoroti, pavyzdžiui: lizdas arba httplistener, ir tt (duomenų kiekis yra mažas ir jūs negalite matyti, kai duomenų kiekis yra didelis, haha, jis mirs tiesiogiai)
|