Tema

Tema: UI-tråder / periodisk behandling

Temaside der du samlet kan følge hvordan du velger mellom og skiller bruken av WPF / WinForms, UI-tråder, async/await, Dispatcher og tidtakere.

Hvorfor dette temaet er lett å stå fast i

I WPF / WinForms blir det vanskelig å se hva som kjører på hvilken tråd i det øyeblikket asynkron kode, oppdateringer av brukergrensesnittet og periodisk behandling blandes. Dette temaet er et samlingspunkt der du kan følge frysing av brukergrensesnittet, oppdateringer på tvers av tråder og usikkerhet om valg av tidtaker som én sammenhengende gruppe.

  • det er uklart hvor kjøringen fortsetter etter await
  • arbeid som hører hjemme i brukergrensesnittet, blandes med arbeid som bør ligge i bakgrunnen
  • ansvaret til DispatcherTimer, System.Threading.Timer og PeriodicTimer er uklart
  • det er vanskelig å se hvilken struktur som er lett å vedlikeholde i WinForms / WPF

Spørsmål som ofte kommer opp i rådgivning

  • .Result / .Wait() står igjen i koden, og skjermbildet fryser lett
  • grensen mellom Task.Run og oppdatering av brukergrensesnittet er uklar
  • implementasjonene av periodisk kjøring er spredt, og det oppstår drift (tidsavvik) og overlappende kjøringer
  • du vil redusere avhengigheten av UI-tråden uten å bryte ansvarsfordelingen i skjermbildene

Typisk fremgangsmåte

I dette området fungerer det bedre i praksis å ordne UI-tråder og periodisk behandling sammen enn å se på async / await og tidtakere hver for seg. Når du ser artiklene og tjenestesidene sammen, blir det lettere å avgjøre om du bør starte med designbeslutninger eller med endringer i implementasjonen.

Rådfør deg med oss her

Hvis du har en utfordring som ligger nær innholdet på denne siden, kan du rådføre deg med oss og legge ved en beskrivelse av dagens situasjon og hva slags støtte du trenger.

Tilbake til hjem