Teema

Kasutajaliidese lõimede / perioodilise töötluse teema

Teemaleht, kus saab ühest kohast läbi käia WPF / WinFormsi, kasutajaliidese lõimi, async/await'i, Dispatcheri ning taimerite kasutuse valikut.

Miks see teema kergesti takerdub

WPF-is ja WinForms’is ei ole niipea, kui asünkroonne töö, kasutajaliidese uuendamine ja perioodiline töötlus segunevad, enam selge, milline lõim mida teeb. See teema on koondpunkt, mille kaudu saab kasutajaliidese hangumist, lõimedevahelisi uuendusi (cross-thread update) ja taimerivaliku küsimusi jälgida ühtse tervikuna.

  • pärast await-i ei ole selge, kuhu täitmine tagasi pöördub
  • kasutajaliideses töödeldavad ja taustale suunatavad toimingud segunevad
  • DispatcherTimer, System.Threading.Timer ja PeriodicTimer vastutusalad ei ole selged
  • WinForms’i ja WPF-i hooldatavat koodikuju on raske näha

Küsimused, mis nõustamisel sageli esile tulevad

  • .Result / .Wait() on alles ja ekraan hangub kergesti
  • Task.Run-i ja kasutajaliidese uuenduste piir ei ole selge
  • perioodiline töötlus on laiali ning tekib ajanihe (drift) või kattuv käivitus
  • soovitakse vähendada sõltuvust kasutajaliidese lõimest, kuid mitte lõhkuda ekraanide vastutust

Sobiv lähenemine

Selles valdkonnas on praktikas tulemuslikum korrastada kasutajaliidese lõim ja perioodiline töötlus koos, mitte vaadata eraldi ainult async / await-i või ainult taimereid. Kui vaadata seotud artikleid ja teenuselehti koos, on lihtsam otsustada, kas alustada disaini otsustest või teostuse parandustest.

Küsige meilt nõu

Kui see leht on lähedane olukorrale, millega te tegelete, küsige meilt nõu, lisades praeguse konteksti ja selle, millist tuge vajate.

Tagasi avalehele