Onderwerp
Thema UI-threads en periodieke verwerking
Een themapagina waarin u WPF / WinForms, de UI-thread, async/await, Dispatcher en de keuze tussen timers samen kunt volgen.
Waarom dit thema vaak vastloopt
Zodra bij WPF / WinForms asynchrone code, UI-updates en periodieke verwerking door elkaar lopen, wordt het moeilijk te zien welke code op welke thread draait. Dit thema is bedoeld om UI-freezes, cross-thread-updates en twijfel over de keuze van een timer als één geheel te kunnen volgen.
- Het is onduidelijk waar de uitvoering na
awaitterugkeert - Werk dat op de UI-thread hoort en werk dat naar de achtergrond moet, raken vermengd
- De verantwoordelijkheden van
DispatcherTimer,System.Threading.TimerenPeriodicTimerzijn niet duidelijk afgebakend - Het is moeilijk te zien hoe WinForms / WPF goed onderhoudbaar blijft
Vraagstukken die vaak in adviesgesprekken ter sprake komen
.Result/.Wait()staat nog in de code en het scherm loopt snel vast- De grens tussen
Task.Runen UI-updates is niet duidelijk - Periodieke uitvoering is verspreid over de code, waardoor drift of overlappende uitvoering optreedt
- U wilt minder afhankelijk zijn van de UI-thread, zonder de verantwoordelijkheden van het scherm te schaden
Een geschikte aanpak
In dit domein werkt het in de praktijk beter om de UI-thread en periodieke verwerking samen te ordenen dan om async / await en timers los van elkaar te bekijken.
Als u de verwante artikelen en de dienstpagina’s samen bekijkt, kunt u gemakkelijker bepalen of u beter bij een ontwerpbeslissing of bij een aanpassing van de implementatie kunt beginnen.
Vraag ons om advies
Heeft u een vraagstuk dat aansluit bij de inhoud van deze pagina? Bespreek het dan met ons en laat ons weten wat de huidige context is en welke ondersteuning u nodig hebt.