Aihe
Käyttöliittymäsäie / jaksottaisen käsittelyn teema
Aihesivu, jolta voi käydä läpi yhdessä paikassa WPF / WinFormsia, käyttöliittymäsäikeitä, async/await-mallia, Dispatcheria ja ajastimien valintaa käyttötilanteen mukaan.
Miksi aiheessa on helppo jäädä jumiin
WPF / WinForms -sovelluksissa asynkroninen käsittely, käyttöliittymän päivitys ja jaksollinen käsittely sekoittuvat helposti, ja silloin ei enää näe, mikä toimii missäkin säikeessä. Tämä aihe on kokoava paikka, jonka avulla käyttöliittymän jumiutumista, säikeiden välisiä päivityksiä ja ajastimen valintaan liittyvää epävarmuutta voi seurata yhtenä kokonaisuutena.
- ei ole selvää, mihin suoritus palaa
await-kutsun jälkeen - käyttöliittymässä ajettava ja taustalle siirrettävä käsittely sekoittuvat
DispatcherTimer-,System.Threading.Timer- jaPeriodicTimer-luokan vastuualueet ovat epäselvät- WinFormsin ja WPF:n helposti ylläpidettävää rakennetta on vaikea hahmottaa
Kysymykset, joita neuvonnassa nousee usein esiin
.Result- ja.Wait()-kutsuja on jäänyt koodiin, ja käyttöliittymä jumiutuu helpostiTask.Run-kutsun ja käyttöliittymän päivityksen raja on epäselvä- jaksollinen suoritus on toteutettu hajanaisesti, ja siitä seuraa ajautumista (drift) ja päällekkäisiä suorituksia
- käyttöliittymäsäikeestä riippuvuutta halutaan vähentää rikkomatta näkymien vastuualueita
Sopiva etenemistapa
Tällä alueella käytännössä toimii paremmin, kun käyttöliittymäsäie ja jaksollinen käsittely jäsennetään yhdessä sen sijaan, että async / await ja ajastimet käsiteltäisiin erikseen.
Kun aiheeseen liittyviä artikkeleita ja palvelusivuja tarkastellaan yhdessä, on helpompi päättää, kannattaako lähteä liikkeelle suunnittelupäätöksistä vai toteutuksen korjauksista.
Neuvottele kanssamme
Jos tämä sivu vastaa ongelmaa, jonka parissa työskentelette, pyytäkää meiltä neuvoa kertomalla nykyinen tilanne ja millaista tukea tarvitsette.