Téma

UI-szál / időszakos feldolgozás téma

Témaoldal, amelyen a WPF / WinForms, az UI-szál, az async/await, a Dispatcher és az időzítők kiválasztása egy helyen végigkövethető.

Miért akad el könnyen ezen a területen

A WPF / WinForms fejlesztésben abban a pillanatban, hogy az aszinkron működés, a felület frissítése és a periodikus feldolgozás összekeveredik, nehezen látható, hogy melyik szálon mi fut. Ez a téma egy olyan gyűjtőoldal, amely a felület lefagyását, a szálak közötti frissítéseket és az időzítő kiválasztásával kapcsolatos bizonytalanságot egyetlen összefüggésben teszi követhetővé.

  • nem egyértelmű, hol folytatódik a végrehajtás az await után
  • összekeveredik az, amit a felületen kell futtatni, és az, amit a háttérbe kell tenni
  • nem tiszta, mi a feladata a DispatcherTimer-nek, a System.Threading.Timer-nek és a PeriodicTimer-nek
  • nehezen látható, milyen a könnyen karbantartható WinForms / WPF-felépítés

Kérdések, amelyek a konzultációk során gyakran felmerülnek

  • megmaradt a .Result / .Wait(), ezért a képernyő könnyen megáll
  • nem tiszta a határ a Task.Run és a felület frissítése között
  • a periodikus végrehajtás megvalósítása szétszóródott, ezért időeltolódás (drift) és átfedő végrehajtás lép fel
  • csökkenteni szeretnénk az UI-szálhoz kötődést úgy, hogy a képernyő felelősségi körei ne sérüljenek

Javasolt haladási irány

Ezen a területen a gyakorlatban jobban beválik, ha az UI-szálat és a periodikus feldolgozást együtt rendezzük, mintha az async / await kérdését és az időzítőket külön-külön vizsgálnánk. A kapcsolódó cikkeket és szolgáltatási oldalakat együtt megtekintve könnyebb eldönteni, hogy a tervezési döntéssel vagy a megvalósítás javításával érdemes-e kezdeni.

Beszélje meg velünk

Ha az oldal tartalmához hasonló megoldandó problémája van, kérjük, beszélje meg velünk a jelenlegi állapotot és azt, milyen támogatásra van szüksége.

Vissza a főoldalra