Asynchrone methode-oproep

Schrijver: Lewis Jackson
Datum Van Creatie: 8 Kunnen 2021
Updatedatum: 15 Kunnen 2024
Anonim
A Introduction to Asynchronous Method Calls
Video: A Introduction to Asynchronous Method Calls

Inhoud

Definitie - Wat betekent Asynchronous Method Call?

Een asynchrone methode-aanroep is een methode die wordt gebruikt bij .NET-programmering en die onmiddellijk vóór de voltooiing van de verwerking naar de beller terugkeert en de oproepthread niet blokkeert.

Wanneer een toepassing een asynchrone methode aanroept, kan deze tegelijkertijd worden uitgevoerd samen met de uitvoering van de asynchrone methode die zijn taak uitvoert. Een asynchrone methode wordt uitgevoerd in een thread die losstaat van de thread van de hoofdtoepassing. De verwerkingsresultaten worden opgehaald via een ander gesprek op een andere thread.

Asynchrone methoden helpen de uitvoering van bronnen te optimaliseren, wat resulteert in een schaalbare toepassing. Deze worden gebruikt om tijdrovende taken uit te voeren, zoals het openen van grote bestanden, verbinding maken met externe computers, het doorzoeken van een database, het oproepen van webservices en ASP.NET-webformulieren.

Asynchrone methode-aanroep kan ook worden aangeduid als asynchrone methode-aanroep (AMI).


Een inleiding tot Microsoft Azure en de Microsoft Cloud | In deze handleiding leert u wat cloud computing inhoudt en hoe Microsoft Azure u kan helpen bij het migreren en runnen van uw bedrijf vanuit de cloud.

Techopedia verklaart Asynchronous Method Call

Asynchrone methode verschilt van synchrone methode in de manier waarop deze terugkeert van de oproep. Terwijl een asynchrone methode-oproep onmiddellijk terugkeert, waardoor het aanroepende programma andere bewerkingen kan uitvoeren, wachten synchrone methode-oproepen tot de methode is voltooid voordat wordt doorgegaan met de programmastroom.

Het .NET-framework heeft een ingebouwde asynchrone infrastructuur zodat elke methode asynchroon kan worden aangeroepen zonder de code te wijzigen.

.NET Framework biedt twee ontwerppatronen om de asynchrone methode te implementeren, namelijk asynchrone gedelegeerden (IASyncResult-objecten) en gebeurtenissen. Het patroon van asynchrone deelnemers is complexer en biedt flexibiliteit, waardoor het geschikt is voor verschillende complexe programmeermodellen. Het op gebeurtenissen gebaseerde model is eenvoudig en zou in de meeste gevallen moeten worden gebruikt.

In het asynchrone gedelegeerdenpatroon gebruikt een gedelegeerde object twee methoden: BeginInvoke en EndInvoke. BeginInvoke heeft een lijst met parameters, die vergelijkbaar zijn met de gewikkelde functie, samen met twee extra optionele parameters; het retourneert het IAsyncResult-object. EndInvoke retourneert twee parameters (out en ref type) samen met het IAsyncResult-object. BeginInvoke wordt gebruikt voor het initiëren van de asynchrone oproep, terwijl EndInvoke wordt gebruikt om de resultaten van de asynchrone oproep op te halen.

Op gebeurtenissen gebaseerde asynchrone patronen gebruiken een klasse met een of meer methoden, genaamd MethodNameAsync, die overeenkomstige synchrone versies hebben die worden uitgevoerd op de huidige thread. Op gebeurtenissen gebaseerde patronen kunnen ook een MethodNameCompleted-gebeurtenis en MethodNameAsyncCancel-methode hebben. Met dit patroon kan de klasse communiceren met asynchrone bewerkingen die in behandeling zijn met behulp van het gebeurtenismodel voor deelnemers.

Hier volgen enkele tips met betrekking tot asynchrone methoden:


  • Voor hoge concurrency moeten asynchrone methoden worden vermeden
  • Voorzichtigheid is geboden bij het doorgeven van gedeelde objectreferenties
  • EndXXX (aangeroepen aan het einde van een asynchrone bewerking) moet worden opgeroepen om uitzonderingen opnieuw uit te voeren en storingen te voorkomen
  • Door alle uitzonderingsobjecten te vangen en op te slaan in asynchrone methode, kan het tijdens de EndXXX-oproep opnieuw worden gegenereerd
  • Besturingselementen in de gebruikersinterface die langdurige asynchrone bewerkingen initiëren, moeten worden uitgeschakeld als ze alleen voor dat doel nodig zijn
  • Asynchrone methoden moeten worden geïmplementeerd met een goed begrip van multithreading en waar ze efficiënter blijken te zijn dan het gebruik van synchrone methoden.