Conectați-vă cu Microsoft
Conectați-vă sau creați un cont
Salut,
Selectați un alt cont.
Aveți mai multe conturi
Alegeți contul cu care doriți să vă conectați.

Simptome

.NET Framework 4.6 adaugă o nouă valoare de tip enumerare, RunContinuationsAsynchronously, TaskCompletionSource și TaskCreationOptions enumerare. Această valoare impune activități pentru a executa asincron, iar acest lucru ajută la evitarea blocare fatală situații. Cu toate acestea, s-a descoperit o problemă în cazul în care, pentru unele anumite tipuri de continuări (în special atunci când Task.WhenAll, Task.WhenAnysau TaskExtensions.Unwrap crea continuări), opțiunea este ignorat. Prin urmare, continuări încă poate executa sincron.

Următorul exemplu Arată problema. Dacă valoarea RunContinuationsAsynchronously au fost funcționează corect, firul două ID-uri care sunt imprimate nu ar fi la fel, deoarece continuarea ar fi întotdeauna programate pe diferitelor fire.

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();
}
}

Rezolvare

În prezent nu există nicio soluție pentru această problemă. Echipa Microsoft .NET Framework funcționează pe o soluție pentru a include într-o actualizare viitoare.


Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.

Au fost utile aceste informații?

Cât de mulțumit sunteți de calitatea limbajului?
Ce v-a afectat experiența?
Apăsând pe Trimitere, feedbackul dvs. va fi utilizat pentru a îmbunătăți produsele și serviciile Microsoft. Administratorul dvs. IT va avea posibilitatea să colecteze aceste date. Angajamentul de respectare a confidențialității.

Vă mulțumim pentru feedback!

×