Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 21695|Svar: 1

[Källa] .net/c# Var försiktig med händelser som drar ner ditt program

[Kopiera länk]
Publicerad på 2016-09-21 16:05:58 | | | |
Händelser laddas och körs i huvudtråden, och om den första händelsen i huvudtråden inte är klar, kommer du till den andra händelsen, precis som andra program i huvudtråden, och väntar tills den föregående är klar innan du bearbetar nästa eller annat program eller händelse i huvudtråden.




Ovanstående är att jag själv kapslade in ett objekt, och i objektet kapslade jag själv in en händelse.

Jag bearbetar data i metoden att prenumerera på händelser, såsom bildannotationsdelen,

Eftersom händelsen jag prenumererade på var en läst txt-fil, och min txt-fil hade 50 000 rader, vilket gjorde att händelsemetoden triggades 50 000 gånger.

Sedan, när jag körde programmet, upptäckte jag att mitt gränssnitt var i ett tillstånd av suspenderad animation, och jag visste att det måste vara ett problem där.

Jag trodde först att det var manipulationen av UI-kontrollerna i metoden som orsakade falsk död.

Sedan, steg för steg, upptäcktes att när data lades till mängden hade den redan gått in i ett tillstånd av suspenderad animation.

Varför??? Till slut fick jag reda på via internet att händelsen finns i huvudtråden, och om den första händelsen inte bearbetas kommer den att blockera körningen av nästa händelse,

Jag förstod i stort sett vad jag beställde, för att uttrycka det rakt på sak, 50 000 händelser gjorde att programmet blockerades, och sedan gick jag in i ett tillstånd av suspenderad animation.

Lösning:

För vissa enkla händelser, som inte leder till exekvering av ett stort antal händelsemetoder, kan skrivas direkt in i händelsemetoden.

För ett stort antal händelsemetoder som anropas hoppas jag att du öppnar en tråd för att hantera det, som: socket eller httplistener, etc. (mängden data är liten och du kan inte se den, när datamängden är stor, haha, då dör den direkt)




Föregående:C# genererar e-postadresskoder i bulk
Nästa:Analys av molnsändningsspelare, Thunderbolt och QQ:s virvelvindsgränssnittsanalys
Publicerad på 2016-09-22 09:23:17 |
Någon postade väldigt bra, support
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com