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 await pokrač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.Timer a PeriodicTimer nie 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.Run a 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.

Späť na domovskú stránku