Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 21695|Antwoord: 1

[Bron] .net/c# Wees voorzichtig met gebeurtenissen die je programma naar beneden halen

[Link kopiëren]
Geplaatst op 21-09-2016 16:05:58 | | | |
Events worden geladen en uitgevoerd op de hoofdthread, en als het eerste event in de hoofdthread niet is afgerond, kom je bij het tweede event, net als bij andere programma's in de hoofdthread, wacht je tot het vorige klaar is met verwerken voordat je het volgende of een ander programma of event in de hoofdthread verwerkt.




Bovenstaande is: ik heb zelf een object ingekapseld, en in het object heb ik zelf een gebeurtenis gekapseld.

Ik verwerk data op de manier waarop ik me abonner op gebeurtenissen, zoals het beeldannotatiegedeelte,

Omdat het event waarop ik me abonneerde een read txt-bestand was, en mijn txt-bestand 50.000 regels had, waardoor de event-methode 50.000 keer werd geactiveerd.

Toen ik het programma draaide, ontdekte ik dat mijn interface in een staat van gesuspendeerde animatie verkeerde, en ik wist dat er een probleem moest zijn.

Ik dacht eerst dat het manipuleren van de UI-besturing op deze manier was die de nep-dood veroorzaakte.

Stap voor stap bleek dat bij het toevoegen van data aan de set deze al in een toestand van suspensie was gegaan.

Waarom??? Uiteindelijk kwam ik via internet erachter dat het evenement in de hoofdthread staat, en als het eerste evenement niet wordt verwerkt, blokkeert het de uitvoering van het volgende evenement.

Ik begreep over het algemeen wat ik had besteld, om het maar bot te zeggen: 50.000 gebeurtenissen zorgden ervoor dat het programma werd geblokkeerd, waarna ik in een toestand van gesuspendeerde animatie terechtkwam.

Oplossing:

Voor sommige eenvoudige gebeurtenissen, die niet leiden tot de uitvoering van een groot aantal gebeurtenismethoden, kunnen ze direct in de gebeurtenismethode worden geschreven.

Voor een groot aantal event methods die worden aangeroepen, hoop ik dat je een thread opent om ermee om te gaan, zoals: socket of httplistener, enzovoort (de hoeveelheid data is klein en je kunt hem niet zien, zodra de hoeveelheid data groot is, haha, sterft hij direct uit)




Vorig:C# genereert e-mailadrescodes in bulk
Volgend:Cloud broadcast player analyse, Thunderbolt en QQ whirlwind interface analyse
Geplaatst op 22-09-2016 09:23:17 |
Iemand heeft heel goed gepost, support
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com