
Ezweni lanamuhla lezinhlelo ezivumelanayo, sibhekana nezinselele eziningi, enye yazo okuwukusingatha ukubambezeleka noma ukulala ngendlela engavumelaniyo. Kuwumkhuba ovamile ekuhlelweni okuvumelanisa ukubangela ukubambezeleka ngamabomu usebenzisa i-Thread.Sleep(), kodwa esimweni esingavumelaniyo, sisebenzisa i-Task.Delay(). Okokuqala, ake singene sizwisise ukuthi i-async futhi ilindile ama-opharetha kanye nesikhala senkinga asixazululayo.
I-async futhi ilindele ama-Opharetha
I-C# ine i-async futhi linda amagama angukhiye avumela abathuthukisi ukuthi babhale ikhodi engavumelaniyo ebukeka ifana kakhulu nekhodi yokuvumelanisa. Ukuhlelwa kwe-Asynchronous kunciphisa izinkinga ngokuvimba noma ukulinda imisebenzi ehlala isikhathi eside efana ne-I/O, izicelo zenethiwekhi, noma ukubala okusindayo, okubese kuthuthukisa ukusebenza kwesistimu.
I-async Public Task AsyncMethod()
{
linda Enye Indlela();
}
Kule ndlela engenhla, lapho ikhodi ikhipha futhi ifinyelela egameni elingukhiye lokulinda, ibuyela kofonayo futhi iqhubekele emugqeni olandelayo kuphela lapho umsebenzi osalindiwe (AnotherMethod()) uqeda.
Ukulala Okuvumelanayo Vs Ukubambezeleka Okungavumelaniyo
Ake sihlole umehluko phakathi kwe-Thread.Sleep() kanye ne-Task.Delay(). Ngekhodi evunyelanisiwe, uma sifuna ukwethula ukubambezeleka noma ukumisa isikhashana ukwenziwa kwendlela, sisebenzisa i-Thread.Sleep(). Nokho, esimweni esivumelanayo, sine-Task.Delay() esebenza 'njengokulala okungavumelani'.
I-SyncMethod() engenalutho yomphakathi
{
Uchungechunge.Ubuthongo(1000);
}
I-async Public Task AsyncMethod()
{
lindela Umsebenzi.Ukubambezeleka(1000);
}
Ngendlela yokuvumelanisa, lapho umyalo 'wokulala' ushaywa, uchungechunge luyavinjwa futhi lulale isikhathi esishiwo esingase sibe nomthelela omubi ekusebenzeni kwesistimu. Ngendlela ye-asynchronous, lapho umyalo 'wokulibaziseka' wenziwe, indlela iyamiswa kodwa intambo idedelwa ibuyele echibini lentambo, ngakho-ke akukho ukuvinjelwa.
Ukwakha Indlela Yokulala E-Asynchronous
Ake sihlanganise indlela ekhombisa umqondo wokulala okungavumelani. Cabangela ukuthi sinendlela ethile yokubala ejulile okudingeka siyihlekise ngokuziphatha.
I-async public Task ComputeIntensiveMethod()
{
ngoba (int i = 0; i <5; i++) {wait Task.Delay(2000); I-Console.WriteLine("Ukusebenzisa ngemva kokulibaziseka"); } } [/ikhodi] Endleleni engenhla, Umsebenzi.Ukubambezeleka kuzokwethula ukubambezeleka okungavumelaniyo kwamasekhondi angu-2 ngemva kokwenziwa ngakunye kwesitatimende sokuphrinta, ngakho-ke kulingisa ukulala okungavumelani. Ukuhlelwa kwe-Asynchronous kubalulekile ekwakheni izinhlelo zokusebenza ezisabelayo nezisebenza kahle. Ngamakhono athuthukile e-C# afana ne-async/await kanye ne-Task.Delay(), ungakwazi ukusebenzisa inzuzo yohlelo lwephethini ye-async ngamandla ayo aphelele. Khumbula ukuthi indlela ye-Task.Delay iphumelela kakhulu uma iqhathaniswa ne-Thread.Lala emhlabeni wokuhlela ongavumelanisiwe, njengoba ungavimbi uchungechunge ngenkathi ubangela ukubambezeleka. Ukusebenzisa lawa malungelo kungathuthukisa kakhulu ukusebenza kohlelo lwakho lokusebenza.