Události se načítají a spustí v hlavním vlákně, a pokud první událost v hlavním vlákně není dokončena, přicházíte k druhé události, stejně jako ostatní programy v hlavním vlákně, čekáte, až předchozí dokončí zpracování, než zpracujete další nebo jiný program či událost v hlavním vlákně.
Výše uvedené je, že jsem objekt zachytil sám a v tom objektu jsem zachytil událost.
Data zpracovávám metodou odběru událostí, například část s anotací obrázků,
Protože událost, na kterou jsem se přihlásil, byla čtený txt soubor a můj txt soubor měl 50 000 řádků, což způsobilo, že metoda události byla spuštěna 50 000krát.
Když jsem pak program spustil, zjistil jsem, že mé rozhraní je ve stavu pozastavené animace a věděl jsem, že tam musí být nějaký problém.
Nejdřív jsem si myslel, že je to manipulace s ovládáním uživatelského rozhraní v této metodě, která způsobuje falešnou smrt.
Postupně se pak zjistilo, že při přidávání dat do sady už vstoupil do stavu pozastavené animace.
Proč??? Nakonec jsem zjistil z internetu, že událost je v hlavním vlákně, a pokud první událost není zpracována, zablokuje spuštění další události,
Obecně jsem chápal, co jsem nařídil, abych to řekl na rovinu, 50 000 událostí způsobilo blokaci programu a pak jsem vstoupil do stavu pozastavené animace.
Řešení:
Některé jednoduché události, které nevedou k provedení velkého počtu metod událostí, lze zapsat přímo do metody událostí.
U velkého počtu volaných metod událostí doufám, že otevřete vlákno, které to řeší, například: socket nebo httplistener atd. (množství dat je malé a nevidíte je, jakmile je množství dat velké, haha, hned to zemře)
|