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.TimerogPeriodicTimerer 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.Runog 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.