Kazalo:
Opredelitev - Kaj pomeni Asinhroni klic metode?
Klic asinhrone metode je metoda, ki se uporablja pri programiranju .NET, ki se klicatelju vrne tik pred zaključkom obdelave in brez blokiranja klicne niti.
Ko aplikacija pokliče asinhrono metodo, se lahko hkrati izvaja skupaj z izvedbo asinhrone metode, ki opravlja svojo nalogo. Asinhrona metoda teče v niti, ločeni od glavne niti aplikacije. Rezultati obdelave se pridobijo prek drugega klica v drugi niti.
Asinhrone metode pomagajo optimizirati izvajanje virov, kar povzroči razširljivo uporabo. Uporabljajo se za izvajanje zamudnih opravil, kot so odpiranje velikih datotek, povezovanje z oddaljenimi računalniki, poizvedovanje po zbirki podatkov, klicanje spletnih storitev in spletnih obrazcev ASP.NET.
Asinhroni klic metode se lahko imenuje tudi asinhroni klic metode (AMI).
Tehopedia razlaga asinhroni klic metode
Asinhrona metoda se od sinhrone metode razlikuje po načinu vrnitve iz klica. Medtem ko se klic asinhrone metode takoj vrne in omogoči klicnemu programu, da izvede druge operacije, sinhronski klici počakajo, da se metoda zaključi, preden nadaljujete s potekom programa.
Okvir .NET ima vgrajeno asinhrono infrastrukturo, tako da je mogoče katerokoli metodo asinhrono priklicati, ne da bi spremenili svojo kodo.
.NET Framework ponuja dva vzorca oblikovanja za izvajanje asinhrone metode, ki so tisti, ki uporabljajo asinhrone delegate (predmeti IASyncResult) in dogodke. Vzorec asinhronih delegatov je bolj zapleten in omogoča fleksibilnost, zato je zelo primeren za različne zapletene modele programiranja. Model, ki temelji na dogodkih, je preprost in ga je treba uporabiti v večini primerov.
V vzorcu asinhronih delegatov objekt delegenta uporablja dve metodi: BeginInvoke in EndInvoke. BeginInvoke ima seznam parametrov, ki so podobni njegovi zaviti funkciji, skupaj z dvema dodatnima dodatnima parametroma; vrne objekt IAsyncResult. EndInvoke vrne dva parametra (ven in tip ref) skupaj s objektom IAsyncResult. BeginInvoke se uporablja za začetek asinhronega klica, medtem ko se EndInvoke uporablja za pridobivanje rezultatov asinhronega klica.
Asinhroni vzorci, ki temeljijo na dogodkih, uporabljajo razred, ki ima eno ali več metod z imenom MethodNameAsync, ki imajo ustrezne sinhronske različice, ki se izvajajo v trenutni niti. Vzorci, ki temeljijo na dogodkih, imajo lahko tudi metodo MethodNameCompleted in MethodNameAsyncCancel. Ta vzorec omogoča razredu, da komunicira s čakajočimi asinhronimi operacijami z uporabo modela delegatskih dogodkov.
Sledi nekaj nasvetov, povezanih z asinhronimi metodami:
- Za visoko sočasnost se je treba izogibati asinhronim metodam
- Bodite previdni pri prenosu referenc na skupne predmete
- EndXXX (imenovan na koncu asinhrone operacije) je treba pozvati, da ponovno izloči izjeme in se izogne napaki
- Z lovljenjem in shranjevanjem vseh objektov izjem v asinhronski metodi ga je mogoče med klicem EndXXX ponovno zavrniti.
- Kontrole v uporabniškem vmesniku, ki sprožijo dolgotrajne asinhrone operacije, morajo biti onemogočene, če so le za to potrebne.
- Asinhrone metode je treba izvajati z razumevanjem večreznih navojev in tam, kjer se izkažejo, da so učinkovitejše od uporabe sinhronih metod.
