Emne
Emne: UI-tråd / periodisk behandling
Emneside, hvor du samlet kan følge WPF / WinForms, UI-tråde, async/await, Dispatcher og valget mellem timere.
Hvorfor emnet let giver problemer
I WPF / WinForms bliver det svært at se, hvilken tråd der kører hvad, så snart asynkron kode, opdatering af brugerfladen og periodisk behandling blandes. Emnet er samlingssiden, hvor du kan følge frysning af brugerfladen, opdateringer på tværs af tråde og tvivl om valg af timer som ét sammenhængende område.
- Det er uklart, hvor udførelsen vender tilbage efter
await - Arbejde, der skal køres i brugerfladen, og arbejde, der skal flyttes til baggrunden, blandes sammen
- Rollerne for
DispatcherTimer,System.Threading.TimerogPeriodicTimerer uklare - Det er svært at se, hvilken struktur der er nem at vedligeholde i WinForms / WPF
Spørgsmål, der ofte dukker op i rådgivningen
.Result/.Wait()er stadig i koden, og skærmen går let i stå- Grænsen mellem
Task.Runog opdatering af brugerfladen er uklar - Periodisk kørsel er spredt, så der opstår tidsforskydning (drift) og overlappende kørsel
- Man vil reducere afhængigheden af UI-tråden, men uden at ødelægge skærmens ansvarsområde
En passende fremgangsmåde
På dette område kommer man i praksis længst ved at ordne UI-tråden og periodisk behandling samlet i stedet for at se på kun async / await eller kun timere.
Når du ser de tilhørende artikler og ydelsessiderne samlet, bliver det lettere at afgøre, om du skal begynde med designbeslutninger eller med rettelser i implementeringen.
Søg rådgivning her
Hvis denne side beskriver en udfordring, der ligner din, så bed os om rådgivning og beskriv din nuværende situation og den form for hjælp, du har brug for.