Dogodki se naložijo in zaženejo v glavni niti, in če prvi dogodek v glavni niti ni končan, pridete do drugega dogodka, tako kot drugi programi v glavni niti, počakate, da se prejšnji dokonča obdelava, preden obdelate naslednji ali drug program ali dogodek v glavni niti.
Zgoraj navedeno je, da sem sam zajel objekt, in v tem predmetu sem sam zajel dogodek.
Podatke obdelujem z metodo naročnine na dogodke, kot je del z označevanjem slik,
Ker je bil dogodek, na katerega sem se naročil, datoteka za branje txt, moja txt datoteka pa je imela 50.000 vrstic, zaradi česar se je metoda dogodka sprožila 50.000-krat.
Ko sem zagnal program, sem ugotovil, da je moj vmesnik v stanju suspendirane animacije in vedel sem, da mora biti tu težava.
Sprva sem mislil, da je manipulacija uporabniških kontrol v metodi povzročila lažno smrt.
Nato je bilo korak za korakom ugotovljeno, da je ob dodajanju podatkov v zbirko že vstopil v stanje suspendirane animacije.
zakaj??? Nazadnje sem na internetu izvedel, da je dogodek v glavni niti, in če prvi dogodek ni obdelan, bo blokiran začetek naslednjega dogodka,
Na splošno sem razumel, kaj sem naročil, da povem naravnost: 50.000 dogodkov je povzročilo blokado programa, nato pa sem vstopil v stanje zamrznjene animacije.
Rešitev:
Za nekatere preproste dogodke, ki ne vodijo do izvajanja velikega števila metod dogodkov, jih je mogoče neposredno zapisati v metodo dogodkov.
Za veliko število klicanih metod dogodkov upam, da boš odprl nit, ki se bo ukvarjala s tem, kot so: socket ali httplistener itd. (količina podatkov je majhna in jih ne vidiš, ko je količina podatkov večja, haha, bodo takoj ugasnili)
|