Ի՞նչ է ConfigureAwait-ը:
Ի՞նչ է ConfigureAwait-ը:

Video: Ի՞նչ է ConfigureAwait-ը:

Video: Ի՞նչ է ConfigureAwait-ը:
Video: How To Achieve Synchronization In C# While Doing Async Await Multithreaded Programming - .NET Core 2024, Նոյեմբեր
Anonim

ConfigureAwait (կեղծ) ներառում է առաջադրանք, որն արդեն ավարտված է մինչև սպասելիս (ինչն իրականում աներևակայելի տարածված է), այնուհետև ConfigureAwait (false) անիմաստ կլինի, քանի որ շարանը շարունակում է գործել մեթոդով կոդը սրանից հետո և դեռ նույն համատեքստում, որը նախկինում կար:

Հետագայում, կարելի է նաև հարցնել, թե որն է ConfigureAwait false-ի օգտագործումը:

ConfigureAwait ( կեղծ ) կարգավորում է առաջադրանքն այնպես, որ սպասելուց հետո շարունակությունը չպետք է կատարվի զանգահարողի համատեքստում, հետևաբար խուսափելով հնարավոր փակուղուց:

Բացի վերևից, ի՞նչ է SynchronizationContext-ը: Համաժամացման համատեքստ Սա ներկայիս միջավայրի ներկայացումն է, որտեղ աշխատում է մեր կոդը: Այսինքն, ասինխրոն ծրագրում, երբ մենք աշխատանքի միավորը պատվիրակում ենք մեկ այլ շղթայի, մենք գրավում ենք ընթացիկ միջավայրը և պահում այն մի օրինակում: Համաժամացման համատեքստ և տեղադրել այն Task օբյեկտի վրա:

Հաշվի առնելով սա, ո՞րն է ConfigureAwait-ի օգտագործումը:

Օգտագործելով ConfigureAwait (կեղծ) փակուղուց խուսափելը վտանգավոր պրակտիկա է: Դուք ստիպված կլինեք օգտագործել ConfigureAwait (կեղծ) արգելափակման կոդով կոչվող բոլոր մեթոդների անցումային փակման ժամանակ բոլոր սպասման համար, ներառյալ երրորդ և երկրորդ կողմի բոլոր ծածկագրերը: Օգտագործելով ConfigureAwait (կեղծ) փակուղուց խուսափելը լավագույն դեպքում պարզապես հաքեր է):

Ինչ է GetAwaiter-ը:

GetAwaiter () մեթոդ, որը վերադարձնում է մի օրինակ, որն ունի GetResult() մեթոդ: Երբ օգտագործվում է անսարք առաջադրանքի վրա, GetResult()-ը կտարածի սկզբնական բացառությունը (այսպես է «սպասել առաջադրանքը;»-ը ստանում է իր վարքագիծը): GetResult(), քանի որ այն պահպանում է առաջադրանքների բացառությունները՝ դրանք AggregateException-ով փաթաթելու փոխարեն: