ConfigureAwait چیست؟
ConfigureAwait چیست؟

تصویری: ConfigureAwait چیست؟

تصویری: ConfigureAwait چیست؟
تصویری: آیا باید از کلمه کلیدی await استفاده کنیم؟ 2024, نوامبر
Anonim

ConfigureAwait (نادرست) شامل کاری است که در زمان انتظار کامل شده است (که در واقع فوق العاده رایج است)، سپس ConfigureAwait (false) بی معنی خواهد بود، زیرا رشته به اجرای کد در متد بعد از این ادامه می دهد و همچنان در همان زمینه ای که قبلا وجود داشت.

متعاقباً ممکن است سؤال شود که ConfigureAwait false چه کاربردی دارد؟

ConfigureAwait ( نادرست ) وظیفه را به گونه ای پیکربندی می کند که ادامه پس از انتظار مجبور نباشد در زمینه تماس گیرنده اجرا شود، بنابراین از هرگونه بن بست احتمالی جلوگیری می کند.

علاوه بر بالا، SynchronizationContext چیست؟ SynchronizationContext نمایشی از محیط فعلی است که کد ما در آن اجرا می‌شود. یعنی در یک برنامه ناهمزمان، وقتی واحدی از کار را به رشته‌ای دیگر واگذار می‌کنیم، محیط فعلی را می‌گیریم و آن را در یک نمونه ذخیره می‌کنیم. SynchronizationContext و آن را روی آبجکت Task قرار دهید.

با در نظر گرفتن این موضوع، ConfigureAwait چه کاربردی دارد؟

استفاده كردن ConfigureAwait (نادرست) برای جلوگیری از بن بست یک عمل خطرناک است. شما مجبور خواهید بود از ConfigureAwait استفاده کنید (نادرست) برای هر انتظار در بسته شدن گذرا همه روش های فراخوانی شده توسط کد مسدود کننده، از جمله همه کدهای شخص ثالث و شخص دوم. استفاده كردن ConfigureAwait (نادرست) برای جلوگیری از بن بست در بهترین حالت فقط یک هک است).

GetAwaiter چیست؟

GetAwaiter متد () که نمونه ای را برمی گرداند که متد ()GetResult دارد. هنگامی که در یک Task دارای خطا استفاده می شود، GetResult() استثنای اصلی را منتشر می کند (به این صورت است که "wait task;" رفتار خود را نشان می دهد). GetResult() زیرا استثناهای وظیفه را به جای قرار دادن آنها در یک AggregateException حفظ می کند.

توصیه شده: