Téma
Téma: vlákno UI / periodické spracovanie
Tematická stránka, na ktorej môžete spolu prejsť WPF / WinForms, prácu s vláknom používateľského rozhrania, async/await, Dispatcher a výber vhodných časovačov.
Prečo sa pri tejto téme postup často zasekne
Vo WPF / WinForms sa v okamihu, keď sa zmieša asynchrónne spracovanie, aktualizácia používateľského rozhrania a periodické spracovanie, stráca prehľad o tom, ktoré vlákno čo vykonáva. Táto téma slúži ako jedno miesto, kde sa zamrznutie používateľského rozhrania, aktualizácie z iného vlákna a výber časovača sledujú v jednom celku.
- nie je ľahké vidieť, kde sa po
awaitpokračuje vo vykonávaní - spracovanie, ktoré má bežať v používateľskom rozhraní, sa mieša so spracovaním určeným pre pozadie
- zodpovednosti
DispatcherTimer,System.Threading.TimeraPeriodicTimernie sú jasné - nie je jasné, ako by mala vyzerať ľahko udržiavateľná podoba pre WinForms / WPF
Otázky, ktoré sa pri konzultáciách objavujú často
- zostáva
.Result/.Wait()a obrazovka sa ľahko zasekne - hranica medzi
Task.Runa aktualizáciou používateľského rozhrania nie je jasná - implementácie periodického spúšťania sú roztrúsené, vzniká drift a duplicitné spustenia
- chceme znížiť závislosť od vlákna používateľského rozhrania, ale nechceme narušiť zodpovednosti obrazovky
Vhodný postup
V praxi prináša viac, ak sa táto oblasť nerozdelí na samotné async / await a samotné časovače, ale ak sa vlákno používateľského rozhrania a periodické spracovanie usporiadajú spolu.
Ak sa súvisiace články a stránky služieb prezerajú spolu, ľahšie sa rozhodne, či je lepšie začať rozhodnutím o návrhu, alebo opravou implementácie.
Požiadajte o konzultáciu
Ak je táto stránka blízka situácii, ktorú riešite, poraďte sa s nami a opíšte nám súčasný kontext a druh podpory, ktorú potrebujete.