Sobes.tech
Middle

Πώς λειτουργεί η λέξη-κλειδί async και ο τελεστής await στη C#;

sobes.tech AI

Απάντηση από AI

Το async σηματοδοτεί τη μέθοδο ως ασύγχρονη, επιτρέποντας τη χρήση await μέσα σε αυτήν. Αυτό δεν καθιστά τη μέθοδο από μόνο του ασύγχρονη, αλλά επιτρέπει στον μεταγλωττιστή να δημιουργήσει μια μηχανή καταστάσεων που θα διαχειρίζεται την εκτέλεση.

Το await χρησιμοποιείται πριν από μια έκφραση που επιστρέφει Task ή Task<T>. Αναστέλλει την εκτέλεση της τρέχουσας async μεθόδου μέχρι να ολοκληρωθεί η αναμενόμενη εργασία, χωρίς να μπλοκάρει το νήμα εκτέλεσης. Μετά την ολοκλήρωση της εργασίας, η εκτέλεση της μεθόδου συνεχίζεται από το σημείο μετά το await. Αν η εργασία επιστρέφει ένα αποτέλεσμα (Task<T>), το await επιστρέφει αυτό το αποτέλεσμα.

public async Task<int> GetDataAsync()
{
    // Ασύγχρονη λειτουργία
    HttpClient client = new HttpClient();
    string result = await client.GetStringAsync("http://example.com"); 

    // Η εκτέλεση συνεχίζεται μετά την ολοκλήρωση του GetStringAsync
    // Επεξεργασία αποτελέσματος
    return result.Length; 
}