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
awaitutá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, aSystem.Threading.Timer-nek és aPeriodicTimer-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.