Πώς λειτουργεί μια ασύγχρονη μέθοδος σε C#;
sobes.tech AI
Απάντηση από AI
Η ασύγχρονη μέθοδος σε C# επιτρέπει την εκτέλεση λειτουργιών που μπορεί να διαρκέσουν μεγάλο χρονικό διάστημα (π.χ. εισαγωγή/εξαγωγή, αιτήματα δικτύου) χωρίς να μπλοκάρει το κύριο νήμα εκτέλεσης.
Όταν καλείται μια ασύγχρονη μέθοδος που έχει χαρακτηριστεί με τη λέξη-κλειδί async, ο έλεγχος μεταβιβάζεται στον κώδικα που την καλεί μέχρι να ολοκληρωθεί η ασύγχρονη λειτουργία. Η λειτουργία εκτελείται στο παρασκήνιο (π.χ. χρησιμοποιώντας μια ομάδα νημάτων ή μηχανισμούς εισόδου/εξόδου του συστήματος).
Η λέξη-κλειδί await μέσα στη ασύγχρονη μέθοδο υποδεικνύει το σημείο όπου η ασύγχρονη λειτουργία μπορεί να διακοπεί. Όταν η εκτέλεση φτάσει στο await, ο έλεγχος επιστρέφει στον καλούντα κώδικα, και η συνέχεια της μεθόδου προγραμματίζεται να εκτελεστεί όταν η αναμενόμενη λειτουργία ολοκληρωθεί.
Το αποτέλεσμα της ασύγχρονης λειτουργίας (ή μια εξαίρεση) επιστρέφεται στη συνέχεια της ασύγχρονης μεθόδου, όπου επεξεργάζεται. Η κατάσταση της ασύγχρονης μεθόδου διαχειρίζεται αυτόματα από τον μεταγλωττιστή C#, ο οποίος τη μετατρέπει σε ένα τελικό αυτόματο.
public async Task<string> GetDataAsync(string url)
{
// Προσομοίωση μιας μακράς λειτουργίας εισόδου/εξόδου
using (var httpClient = new HttpClient())
{
string result = await httpClient.GetStringAsync(url); // await: η εκτέλεση της μεθόδου μπορεί να διακοπεί
return result;
}
}
// Παράδειγμα κλήσης ασύγχρονης μεθόδου
public async Task ProcessDataAsync(string url)
{
Console.WriteLine("Έναρξη φόρτωσης δεδομένων...");
string data = await GetDataAsync(url); // Αναμονή για την ολοκλήρωση της ασύγχρονης λειτουργίας
Console.WriteLine("Δεδομένα φορτώθηκαν: " + data.Length + " χαρακτήρες.");
}