Çfarë është ConfigureAwait?
Çfarë është ConfigureAwait?

Video: Çfarë është ConfigureAwait?

Video: Çfarë është ConfigureAwait?
Video: How To Achieve Synchronization In C# While Doing Async Await Multithreaded Programming - .NET Core 2024, Nëntor
Anonim

ConfigureAwait (e rreme) përfshin një detyrë që tashmë është përfunduar në kohën kur pritet (që në fakt është tepër e zakonshme), atëherë ConfigureAwait (false) do të jetë e pakuptimtë, pasi thread vazhdon të ekzekutojë kodin në metodë pas kësaj dhe ende në të njëjtin kontekst që ishte atje më parë.

Më pas, dikush mund të pyesë gjithashtu, cili është përdorimi i ConfigureAwait false?

ConfigureAwait ( i rremë ) konfiguron detyrën në mënyrë që vazhdimi pas pritjes të mos ketë nevojë të ekzekutohet në kontekstin e thirrësit, duke shmangur kështu çdo bllokim të mundshëm.

Përveç sa më sipër, çfarë është SynchronizationContext? Konteksti i sinkronizimit është një paraqitje e mjedisit aktual në të cilin po ekzekutohet kodi ynë. Kjo do të thotë, në një program asinkron, kur delegojmë një njësi të punës në një thread tjetër, ne kapim mjedisin aktual dhe e ruajmë atë në një shembull të Konteksti i sinkronizimit dhe vendoseni në objektin Task.

Duke e mbajtur këtë në konsideratë, cili është përdorimi i ConfigureAwait?

Duke përdorur ConfigureAwait (e gabuar) për të shmangur bllokimet është një praktikë e rrezikshme. Ju do të duhet të përdorni ConfigureAwait (false) për çdo pritje në mbylljen kalimtare të të gjitha metodave të thirrura nga kodi bllokues, duke përfshirë të gjithë kodin e palës së tretë dhe të palës së dytë. Duke përdorur ConfigureAwait (e gabuar) për të shmangur bllokimin është në rastin më të mirë vetëm një hak).

Çfarë është GetAwaiter?

GetAwaiter () metodë, e cila kthen një shembull që ka një metodë GetResult(). Kur përdoret në një detyrë me defekt, GetResult() do të përhapë përjashtimin origjinal (kjo është mënyra se si "detyra e pritjes;" merr sjelljen e saj). GetResult() sepse ruan përjashtimet e detyrave në vend që t'i mbështjellë ato në një AggregateException.

Recommended: