Prihláste sa s kontom Microsoft
Prihláste sa alebo si vytvorte konto.
Dobrý deň,
Vyberte iné konto.
Máte viacero kont
Vyberte konto, s ktorým sa chcete prihlásiť.

Príznaky

.NET Framework 4.6 pridať novú hodnotu typu enum, RunContinuationsAsynchronouslyenums TaskCompletionSource a TaskCreationOptions . Táto hodnota sily úloh spustiť asynchrónne a pomáha zabrániť zablokovaniu situácie. Však bol zistil problém, keď niektoré špecifické pokračovaním (predovšetkým pri Task.WhenAlla Task.WhenAny TaskExtensions.Unwrap vytvorte pokračovaním), možnosť sa bude ignorovať. Preto pokračovaním môže spustiť synchrónne.

Nasledujúci príklad ukazuje problém. Ak hodnota RunContinuationsAsynchronously fungujú správne, dva vlákno ID, ktoré sa vytlačí nikdy bude, pretože pokračovanie by sa vždy naplánovaná do iného vlákna.

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

Riešenie

V súčasnosti neexistuje žiadne alternatívne riešenie tohto problému. Microsoft .NET Framework tím pracuje na riešenie v budúcnosti aktualizovať.


Potrebujete ďalšiu pomoc?

Chcete ďalšie možnosti?

Môžete preskúmať výhody predplatného, prehľadávať školiace kurzy, naučiť sa zabezpečiť svoje zariadenie a ešte oveľa viac.

Komunity pomôžu s kladením otázok a odpovedaním na ne, s poskytovaním pripomienok a so získavaním informácií od odborníkov s bohatými znalosťami.

Boli tieto informácie užitočné?

Aká je podľa vás jazyková kvalita textu?
Čo sa vám páčilo, prípadne čo nie?
Stlačením tlačidla Odoslať sa vaše pripomienky použijú na zlepšenie produktov a služieb spoločnosti Microsoft. Váš správca IT bude môcť tieto údaje zhromažďovať. Vyhlásenie o ochrane osobných údajov.

Ďakujeme za vaše pripomienky!

×