Πώς χρησιμοποιείται η λέξη-κλειδί await σε C#;
sobes.tech AI
Απάντηση από AI
Η λέξη-κλειδί await χρησιμοποιείται στη C# για να περιμένει με μη μπλοκαριστικό τρόπο την ολοκλήρωση μιας ασύγχρονης λειτουργίας.
Η χρήση του await είναι δυνατή μόνο μέσα σε ασύγχρονες μεθόδους που έχουν χαρακτηριστεί με τον τροποποιητή async.
Όταν η εκτέλεση φτάσει στη δήλωση await, η ροή ελέγχου επιστρέφει στον καλούντα και η μέθοδος "παραμένει σε αναστολή" μέχρι να ολοκληρωθεί η αναμενόμενη εργασία. Μετά την ολοκλήρωση της εργασίας, η εκτέλεση της μεθόδου συνεχίζεται από το σημείο όπου είχε σταματήσει.
Αυτό επιτρέπει την απελευθέρωση του νήματος που κάλεσε (π.χ. το νήμα διεπαφής χρήστη ή το νήμα διακομιστή web) για την εκτέλεση άλλων εργασιών, βελτιώνοντας την ανταπόκριση και την κλιμάκωση της εφαρμογής.
public async Task<string> GetDataAsync()
{
// Προσομοίωση μιας μακράς ασύγχρονης λειτουργίας
await Task.Delay(2000);
return "Δεδομένα λήφθηκαν";
}
public async Task ProcessDataAsync()
{
Console.WriteLine("Έναρξη επεξεργασίας...");
string result = await GetDataAsync(); // Περιμένει την ολοκλήρωση του GetDataAsync χωρίς μπλοκάρισμα
Console.WriteLine($"Αποτέλεσμα: {result}");
Console.WriteLine("Η επεξεργασία ολοκληρώθηκε.");
}
Η λέξη-κλειδί await μπορεί να εφαρμοστεί σε:
- Εργασίες (Task, Task<T>, ValueTask, ValueTask<T>): πιο συνηθισμένο σενάριο.
- τύπους awaitable: αντικείμενα που έχουν τη μέθοδο
GetAwaiter(), η οποία επιστρέφει τύπο με τις μεθόδουςIsCompleted,GetResult()καιOnCompleted()(για υποστήριξη συνέχειας).
Η χρήση του await καθιστά τον ασύγχρονο κώδικα πιο ευανάγνωστο και παρόμοιο με τον συγχρονικό, εξαλείφοντας την ανάγκη για χειροκίνητη γραφή κώδικα συνέχειας ή χρήση callbacks.