Video: Ի՞նչ է ConfigureAwait-ը:
2024 Հեղինակ: Lynn Donovan | [email protected]. Վերջին փոփոխված: 2023-12-15 23:48
ConfigureAwait (կեղծ) ներառում է առաջադրանք, որն արդեն ավարտված է մինչև սպասելիս (ինչն իրականում աներևակայելի տարածված է), այնուհետև ConfigureAwait (false) անիմաստ կլինի, քանի որ շարանը շարունակում է գործել մեթոդով կոդը սրանից հետո և դեռ նույն համատեքստում, որը նախկինում կար:
Հետագայում, կարելի է նաև հարցնել, թե որն է ConfigureAwait false-ի օգտագործումը:
ConfigureAwait ( կեղծ ) կարգավորում է առաջադրանքն այնպես, որ սպասելուց հետո շարունակությունը չպետք է կատարվի զանգահարողի համատեքստում, հետևաբար խուսափելով հնարավոր փակուղուց:
Բացի վերևից, ի՞նչ է SynchronizationContext-ը: Համաժամացման համատեքստ Սա ներկայիս միջավայրի ներկայացումն է, որտեղ աշխատում է մեր կոդը: Այսինքն, ասինխրոն ծրագրում, երբ մենք աշխատանքի միավորը պատվիրակում ենք մեկ այլ շղթայի, մենք գրավում ենք ընթացիկ միջավայրը և պահում այն մի օրինակում: Համաժամացման համատեքստ և տեղադրել այն Task օբյեկտի վրա:
Հաշվի առնելով սա, ո՞րն է ConfigureAwait-ի օգտագործումը:
Օգտագործելով ConfigureAwait (կեղծ) փակուղուց խուսափելը վտանգավոր պրակտիկա է: Դուք ստիպված կլինեք օգտագործել ConfigureAwait (կեղծ) արգելափակման կոդով կոչվող բոլոր մեթոդների անցումային փակման ժամանակ բոլոր սպասման համար, ներառյալ երրորդ և երկրորդ կողմի բոլոր ծածկագրերը: Օգտագործելով ConfigureAwait (կեղծ) փակուղուց խուսափելը լավագույն դեպքում պարզապես հաքեր է):
Ինչ է GetAwaiter-ը:
GetAwaiter () մեթոդ, որը վերադարձնում է մի օրինակ, որն ունի GetResult() մեթոդ: Երբ օգտագործվում է անսարք առաջադրանքի վրա, GetResult()-ը կտարածի սկզբնական բացառությունը (այսպես է «սպասել առաջադրանքը;»-ը ստանում է իր վարքագիծը): GetResult(), քանի որ այն պահպանում է առաջադրանքների բացառությունները՝ դրանք AggregateException-ով փաթաթելու փոխարեն: