Hvordan du bruker async og venter i C#

Hvordan du bruker async og venter i C#
Asynk og avventer er kraftige metoder i C# som lar deg utføre tidkrevende operasjoner uten å blokkere hovedtråden. En av nøkkelfunksjonene til C# som støtter asynkron programmering er async () og venter (). Denne artikkelen vil forklare hva asynk.

Hva er async i C#

ASYNC () -metoden kjører synkront til den når sitt første avvente uttrykk. Async () brukes før returtypen på metoden, og metodesignaturen må returnere et oppgave eller oppgaveobjekt, der t er typen av verdien som metoden returnerer.

async ()

// vent asynkront på at litt operasjon skal fullføre
// Returner et oppgave eller oppgaveobjekt

Her er endringer i syntaks:

  • : Returtypen på metoden, dette kan være en hvilken som helst gyldig C# datatype.
  • : Navnet på metoden.
  • : Metodeparametrene. Dette kan være noen gyldige C# datatyper.

Hva venter i C#

Await () brukes til å pause utførelsen av metoden til den asynkrone operasjonen er fullført, her er syntaks for denne funksjonen:

avvente

Her er endringer i syntaks:

  • : Typen av resultatet som den asynkrone operasjonen kommer tilbake.
  • : Variabelen som lagrer resultatet av den asynkrone operasjonen.
  • : Metodesamtalen som utfører den asynkrone operasjonen.

Hvordan du bruker async og venter i C#

Ved å bruke async og avvente, kan du lage kode som er mer responsiv og effektiv, ettersom den frigjør hovedtråden for å håndtere andre operasjoner mens de asynkrone operasjonene kjører i bakgrunnen. Nedenfor er eksempelkoden som bruker både asynk.

ved hjelp av system;
Bruke system.Tråd.Oppgaver;
Klasseprogram

statisk tomrom (streng [] args)

Konsoll.WritLine ("Start beregning");
// Start en oppgave for å legge til 2 og 3 asynkront
Oppgaveoppgave1 = addasync (2, 3);
Konsoll.WritLine ("Adding ...");
// Start en oppgave for å trekke 5 fra 10 asynkront
Oppgaveoppgave2 = subtractAsync (10, 5);
Konsoll.WritLine ("Trekker ...");
// Vent til den første oppgaven skal fullføre og få resultatet
int resultat1 = oppgave1.Resultat;
Konsoll.WritLine ($ "2 + 3 = resultat1");
// Vent til den andre oppgaven skal fullføre og få resultatet
int resultat2 = oppgave2.Resultat;
Konsoll.WritLine ($ "10 - 5 = resultat2");
Konsoll.WritLine ("Beregning fullført!");

// en metode som legger til to tall asynkront
statisk async taskaddasync (int a, int b)

Venter oppgave.Forsinkelse (1000); // simulere litt forsinkelse
returner A + B;

// en metode som trekker to tall asynkront
statisk async -oppgaver (int a, int b)

Venter oppgave.Forsinkelse (1000); // simulere litt forsinkelse
returner A - B;

I koden bruker Addasync- og subtractasync -metodene det avvente nøkkelordet for å indikere at de utfører en asynkron operasjon, som i dette tilfellet er en simulert forsinkelse ved bruk av denne oppgavens forsinkelse () -funksjonen. Dette gjør at metodene kan returnere umiddelbart uten å blokkere hovedtråden.

I hovedmetoden kalles Addasync- og subtraksjonsmetoder ved hjelp av det avvente nøkkelordet for å asynkront vente på resultatene av operasjonene. Dette gjør at programmet kan fortsette å kjøre og utføre andre oppgaver mens du venter på at de asynkrone operasjonene skal fullføre.

Når oppgavene er fullført, brukes resultategenskapen til å hente resultatet av hver oppgave, og skrives ut til konsollen. Her er utdataene fra koden som vi diskuterte tidligere som utfører tillegg og subtraksjon ved hjelp av async og venter:

Konklusjon

Asynkron programmering kan gi flere fordeler for applikasjonen din, inkludert forbedret ytelse, økt respons og forenklet kode. Ved å bruke asynkrone programmeringsteknikker kan du lage mer effektive og responsive applikasjoner i C#. Async -nøkkelordet brukes med funksjonsnavnet for å få det til å fungere asynkront mens du venter vil suspendere operasjonen til den asynkrone metoden er ferdig med utførelsen og skriver ut resultatet.