Šiuo metu esate neprisijungę, laukiama, kol iš naujo prisijungsite prie interneto

RunContinuationsAsynchronously veikia pratęsimą asynchronicznie

SVARBU: šis straipsnis išverstas naudojant „Microsoft“ mašininio vertimo programinę įrangą ir gali būti pataisytas naudojant „Community Translation Framework“ (CTF) technologiją. „Microsoft“ siūlo mašinos išverstus ir po to bendruomenės suredaguotus straipsnius, taip pat žmogaus išverstus straipsnius siekdama suteikti prieigą prie visų savo žinių bazės straipsnių daugeliu kalbų. Mašinos išverstuose ir vėliau paredaguotuose straipsniuose gali būti žodyno, sintaksės ir / arba gramatikos klaidų. „Microsoft“ neatsako už jokius netikslumus, klaidas arba žalą, patirtą dėl neteisingo turinio vertimo arba mūsų klientų naudojimosi juo. Daugiau apie CTF žr. http://support.microsoft.com/gp/machine-translation-corrections.

Spustelėkite čia, norėdami pamatyti šio straipsnio versiją anglų kalba: 3118695
Požymiai
.NET Framework 4.6 priskirti naują išvardijimo tipo reikšmę, RunContinuationsAsynchronously, TaskCompletionSource ir TaskCreationOptionsenum. Ši reikšmė verčia taip, kad paleisti asynchronicznie, o tai padeda išvengti situacijų, aklavietė. Tačiau aptikta problema, kai kurių konkrečių rūšių pratęsimą (ypač kaiTask.WhenAll, Task.WhenAnyarba TaskExtensions.Unwrapsukurti ir pratęsimą), kad nepaisoma. Todėl pratęsimą gali paleisti sinchroniškai.

Šioje pavyzdys rodo, kad problema. Jei RunContinuationsAsynchronouslyreikšmė veikia tinkamai, du gija ID, yra atspausdinti niekada nebus tas pats, nes tęsti visada suplanuota į kitą temas.

using System;using System.Threading;using System.Threading.Tasks; class Program{    static void Main()    {        var mres = new ManualResetEventSlim();         Console.WriteLine(Environment.CurrentManagedThreadId);         var tcs = new TaskCompletionSource<bool>(TaskCreationOptions.RunContinuationsAsynchronously);         var t = Task.WhenAll(tcs.Task);         t.ContinueWith(delegate        {            Console.WriteLine(Environment.CurrentManagedThreadId);            mres.Set();        }, TaskContinuationOptions.ExecuteSynchronously);         tcs.SetResult(true);        mres.Wait();    }}

Sprendimas
Šiuo metu nėra šios problemos sprendimo. Microsoft .NET Framework komandos dirba sprendimą įtraukti į ateityje atnaujinti.


Įspėjimas: šis straipsnis išverstas automatiškai

Savybės

Straipsnio ID: 3118695 – Paskutinė peržiūra: 11/25/2015 03:49:00 – Peržiūra: 1.0

Microsoft .NET Framework 4.6.1

  • kbsurveynew kbexpertiseadvanced kbtshoot kbmt KB3118695 KbMtlt
Atsiliepimai