מה זה 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? סינכרון הקשר הוא ייצוג של הסביבה הנוכחית שבה הקוד שלנו פועל. כלומר, בתוכנית אסינכרונית, כאשר אנו מאצילים יחידת עבודה לשרשור אחר, אנו לוכדים את הסביבה הנוכחית ומאחסנים אותה במופע של סינכרון הקשר והנח אותו על אובייקט המשימה.

בהתחשב בכך, מה השימוש ב-ConfigureAwait?

באמצעות ConfigureAwait (שקר) להימנע ממבוי סתום הוא מנהג מסוכן. אתה תיאלץ השתמש ב-ConfigureAwait (false) עבור כל ממתין בסגירה הטרנזיטיבית של כל השיטות הנקראות על ידי קוד החסימה, כולל כל קוד צד שלישי ושני. באמצעות ConfigureAwait (שקר) כדי למנוע מבוי סתום זה במקרה הטוב רק פריצה).

מה זה GetAwaiter?

GetAwaiter () שיטה, המחזירה מופע שיש לו שיטה GetResult(). בשימוש במשימה פגומה, GetResult() יפיץ את החריג המקורי (כך " await task; " מקבל את ההתנהגות שלה). GetResult() מכיוון שהוא שומר על חריגות המשימות במקום לעטוף אותן ב-AggregateException.