Heim  >  Artikel  >  Backend-Entwicklung  >  C# | Asynchrone Programmierung mit [async | warten | Aufgabe]

C# | Asynchrone Programmierung mit [async | warten | Aufgabe]

WBOY
WBOYOriginal
2024-07-23 21:49:44844Durchsuche

C# | Asynchronous programming with [async | await | Task]

Note
You can check other posts on my personal website: https://hbolajraf.net

Verwenden von Wait und Async Task in C

In C# wird asynchrone Programmierung verwendet, um die Reaktionsfähigkeit von Anwendungen zu verbessern, indem Aufgaben gleichzeitig ausgeführt werden können, ohne den Hauptthread zu blockieren. Die Schlüsselwörter „await“ und „async“ spielen dabei eine entscheidende Rolle. Dieser Leitfaden zeigt Ihnen, wie Sie Wait und Async Task effektiv nutzen.

Einführung

Asynchrone Programmierung in C# ist für Aufgaben unerlässlich, die viel Zeit in Anspruch nehmen können, wie z. B. E/A-gebundene Vorgänge oder Netzwerkanforderungen. Durch die Verwendung von „await“ und „async“ können Sie sicherstellen, dass Ihre Anwendung reagiert, während sie auf den Abschluss dieser Aufgaben wartet.

Verwenden einer asynchronen Aufgabe

  1. Definieren Sie eine asynchrone Methode: Um „await“ zu verwenden, definieren Sie eine asynchrone Methode innerhalb einer Klasse, die normalerweise eine Aufgabe oder Task zurückgibt.
   public async Task MyAsyncMethod()
   {
       // Asynchronous code here
   }
  1. Asynchrone Methode aufrufen: In einer anderen Methode können Sie Ihre asynchrone Methode mit dem Schlüsselwort „await“ aufrufen.
   await MyAsyncMethod();

Das Schlüsselwort „await“.

Das Schlüsselwort „await“ wird innerhalb einer asynchronen Methode verwendet, um die Ausführung anzuhalten, bis die erwartete Aufgabe abgeschlossen ist. Dadurch kann der aufrufende Thread andere Arbeiten ohne Blockierung fortsetzen.

async Task MyAsyncMethod()
{
    var result = await SomeAsyncTask();
    // Code after the await will execute when SomeAsyncTask is completed.
}

Ausnahmebehandlung

Um Ausnahmen in asynchronen Methoden zu behandeln, können Sie Standard-Try-Catch-Blöcke verwenden. Wenn eine Ausnahme in einer asynchronen Methode ausgelöst wird, wird sie erfasst und als Teil der Aufgabe weitergegeben.

try
{
    await SomeAsyncMethod();
}
catch (Exception ex)
{
    // Handle the exception
}

Stornierungstoken

Um einen asynchronen Vorgang abzubrechen, können Sie CancellationToken verwenden. Übergeben Sie ein CancellationToken an die asynchrone Methode und prüfen Sie, ob innerhalb der Methode ein Abbruch erfolgt.

async Task MyAsyncMethod(CancellationToken cancellationToken)
{
    // Check for cancellation
    cancellationToken.ThrowIfCancellationRequested();

    // Continue with the operation
}

Beispiel aus der Praxis

Hier ist ein Beispiel für ein häufiges Szenario aus der Praxis: asynchrones Erstellen einer HTTP-Anfrage.

public async Task<string> FetchDataAsync(string url)
{
    using (var httpClient = new HttpClient())
    {
        var response = await httpClient.GetAsync(url);
        response.EnsureSuccessStatusCode();
        return await response.Content.ReadAsStringAsync();
    }
}

Was kommt als Nächstes?

Durch die Verwendung von „await“ und „async Task“ in C# können Sie reaktionsfähige und effiziente Anwendungen schreiben, insbesondere wenn Sie E/A-gebundene oder lang laufende Aufgaben bearbeiten. Es ermöglicht Ihnen, die Reaktionsfähigkeit Ihrer Anwendung aufrechtzuerhalten und das allgemeine Benutzererlebnis zu verbessern, indem Sie die gleichzeitige Ausführung mehrerer Aufgaben ermöglichen, ohne den Hauptthread zu blockieren.

Das obige ist der detaillierte Inhalt vonC# | Asynchrone Programmierung mit [async | warten | Aufgabe]. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:C# | Best PracticesNächster Artikel:C# | Best Practices