Logga in med Microsoft
Logga in eller skapa ett konto.
Hej,
Välj ett annat konto.
Du har flera konton
Välj det konto som du vill logga in med.

Symptom

.NET Framework 4.6 lagt till en ny typ uppräkningsvärde, RunContinuationsAsynchronously, TaskCompletionSource och TaskCreationOptions -uppräkningar. Det här värdet framtvingar aktiviteter ska köras asynkront och detta hjälper till att undvika dödläge. Dock ett problem upptäcks, för vissa specifika typer av continuations (i synnerhet när skapar continuations Task.WhenAll, Task.WhenAnyeller TaskExtensions.Unwrap ) alternativet ignoreras. Därför kan continuations fortfarande köras synkront.

Följande exempel visar problemet. Om värdet för RunContinuationsAsynchronously fungerar blir de två tråden-ID som skrivs ut aldrig samma, eftersom fortsatta alltid kan schemaläggas på olika trådar.

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

Lösning

Det finns för närvarande ingen lösning på problemet. Microsoft.NET Framework-teamet arbetar på en lösning som ska ingå i en framtida uppdatering.


Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.

Communities hjälper dig att ställa och svara på frågor, ge feedback och få råd från experter med rika kunskaper.

Hade du nytta av den här informationen?

Hur nöjd är du med språkkvaliteten?
Vad påverkade din upplevelse?
Genom att trycka på skicka, kommer din feedback att användas för att förbättra Microsofts produkter och tjänster. IT-administratören kan samla in denna data. Sekretesspolicy.

Tack för din feedback!

×