Ano ang ConfigureAwait?
Ano ang ConfigureAwait?

Video: Ano ang ConfigureAwait?

Video: Ano ang ConfigureAwait?
Video: Which do I use, ConfigureAwait True or False? 2024, Mayo
Anonim

I-configureAwait (false) ay nagsasangkot ng isang gawain na natapos na sa oras na ito ay hinihintay (na talagang hindi kapani-paniwalang karaniwan), pagkatapos ay ang I-configureAwait (false) ay magiging walang kabuluhan, dahil ang thread ay patuloy na nagpapatupad ng code sa pamamaraan pagkatapos nito at sa parehong konteksto na naroon dati.

Kasunod nito, maaari ding magtanong, ano ang gamit ng ConfigureAwait false?

I-configureAwait ( mali ) ikino-configure ang gawain upang ang pagpapatuloy pagkatapos ng paghihintay ay hindi kailangang patakbuhin sa konteksto ng tumatawag, samakatuwid ay iniiwasan ang anumang posibleng mga deadlock.

Sa tabi sa itaas, ano ang SynchronizationContext? SynchronizationContext ay isang representasyon ng kasalukuyang kapaligiran kung saan tumatakbo ang aming code. Ibig sabihin, sa isang asynchronous na programa, kapag nagtalaga kami ng isang yunit ng trabaho sa isa pang thread, nakukuha namin ang kasalukuyang kapaligiran at iniimbak ito sa isang halimbawa ng SynchronizationContext at ilagay ito sa bagay na Gawain.

Kung isasaalang-alang ito, ano ang gamit ng ConfigureAwait?

Gamit I-configureAwait (false) upang maiwasan ang deadlocks ay isang mapanganib na kasanayan. Kailangan mong gawin gamitin ang ConfigureAwait (false) para sa bawat paghihintay sa palipat na pagsasara ng lahat ng pamamaraan na tinatawag ng blocking code, kasama ang lahat ng third- at second-party na code. Gamit I-configureAwait (false) upang maiwasan ang deadlock ay pinakamahusay na isang hack lamang).

Ano ang GetAwaiter?

GetAwaiter () method, na nagbabalik ng isang instance na mayroong GetResult() method. Kapag ginamit sa isang fault na Gawain, ang GetResult() ay magpapalaganap ng orihinal na pagbubukod (ito ay kung paano nakuha ng "waiit task; " ang pag-uugali nito). GetResult() dahil pinapanatili nito ang mga pagbubukod sa gawain sa halip na i-wrap ang mga ito sa isang AggregateException.

Inirerekumendang: