Τι είναι το ConfigureAwait;
Τι είναι το ConfigureAwait;

Βίντεο: Τι είναι το ConfigureAwait;

Βίντεο: Τι είναι το ConfigureAwait;
Βίντεο: How To Achieve Synchronization In C# While Doing Async Await Multithreaded Programming - .NET Core 2024, Ενδέχεται
Anonim

ConfigureAwait (ψευδές) περιλαμβάνει μια εργασία που έχει ήδη ολοκληρωθεί από τη στιγμή που αναμένεται (η οποία είναι στην πραγματικότητα απίστευτα συνηθισμένη), τότε η ConfigureAwait (false) δεν θα έχει νόημα, καθώς το νήμα συνεχίζει να εκτελεί κώδικα στη μέθοδο μετά από αυτό και εξακολουθεί να βρίσκεται στο ίδιο πλαίσιο που υπήρχε προηγουμένως.

Στη συνέχεια, μπορεί κανείς να ρωτήσει, ποια είναι η χρήση του ConfigureAwait false;

ConfigureAwait ( ψευδής ) διαμορφώνει την εργασία έτσι ώστε η συνέχιση μετά την αναμονή να μην χρειάζεται να εκτελείται στο πλαίσιο του καλούντος, αποφεύγοντας έτσι πιθανά αδιέξοδα.

Εκτός από τα παραπάνω, τι είναι το SynchronizationContext; SynchronizationContext είναι μια αναπαράσταση του τρέχοντος περιβάλλοντος στο οποίο εκτελείται ο κώδικάς μας. Δηλαδή, σε ένα ασύγχρονο πρόγραμμα, όταν εκχωρούμε μια μονάδα εργασίας σε ένα άλλο νήμα, καταγράφουμε το τρέχον περιβάλλον και το αποθηκεύουμε σε μια παρουσία SynchronizationContext και τοποθετήστε το στο αντικείμενο Task.

Έχοντας αυτό υπόψη, ποια είναι η χρήση του ConfigureAwait;

Χρησιμοποιώντας ConfigureAwait (ψευδή) η αποφυγή αδιεξόδων είναι επικίνδυνη πρακτική. Θα έπρεπε χρησιμοποιήστε το ConfigureAwait (ψευδής) για κάθε αναμονή στο μεταβατικό κλείσιμο όλων των μεθόδων που καλούνται από τον κωδικό αποκλεισμού, συμπεριλαμβανομένων όλων των κωδικών τρίτου και δεύτερου κατασκευαστή. Χρησιμοποιώντας ConfigureAwait (ψευδές) για να αποφευχθεί το αδιέξοδο είναι στην καλύτερη περίπτωση απλώς μια αμυχή).

Τι είναι το GetAwaiter;

GetAwaiter () μέθοδος, η οποία επιστρέφει μια παρουσία που έχει μια μέθοδο GetResult(). Όταν χρησιμοποιείται σε μια εσφαλμένη Εργασία, η GetResult() θα διαδώσει την αρχική εξαίρεση (έτσι αποκτά τη συμπεριφορά της η "εργασία αναμονής;"). GetResult() επειδή διατηρεί τις εξαιρέσεις εργασιών αντί να τις αναδιπλώνει σε ένα AggregateException.

Συνιστάται: