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 await terugkeert
  • Werk dat op de UI-thread hoort en werk dat naar de achtergrond moet, raken vermengd
  • De verantwoordelijkheden van DispatcherTimer, System.Threading.Timer en PeriodicTimer zijn 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.Run en 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.

Terug naar home