RunContinuationsAsynchronously nicht Fortsetzungen asynchron ausgeführt

Wichtig: Dieser Artikel wurde maschinell übersetzt und wird dann möglicherweise mithilfe des Community Translation Framework (CTF) von Mitgliedern unserer Microsoft Community nachbearbeitet. Weitere Informationen zu CTF finden Sie unter http://support.microsoft.com/gp/machine-translation-corrections/de.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 3118695
Problembeschreibung
.NET Framework 4.6 hinzugefügt TaskCompletionSource und TaskCreationOptionsEnumerationen einen neuen Typ Enumerationswert, RunContinuationsAsynchronously. Dieser Wert erzwingt Aufgaben asynchron ausführen und dadurch um Deadlocks zu vermeiden. Allerdings wurde ein Problem entdeckt, für einige bestimmten Arten von Continuations (insbesondere beim Erstellen der FortsetzungenTask.WhenAll, Task.WhenAnyoder TaskExtensions.Unwrap) die Option ignoriert. Daher können Fortsetzungen weiterhin synchron ausgeführt.

Das folgende Beispiel veranschaulicht das Problem. Ordnungsgemäß RunContinuationsAsynchronouslyWert wurden wäre zwei Thread-IDs, die ausgedruckt werden nie, da die Fortsetzung immer auf verschiedenen Threads geplant wird.

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ösung
Es gibt keine Abhilfe für dieses Problem. .NET Framework mit Microsoft Team arbeitet an einer Lösung in einem zukünftigen Update enthalten.


Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 3118695 – Letzte Überarbeitung: 11/24/2015 18:12:00 – Revision: 1.0

Microsoft .NET Framework 4.6.1

  • kbsurveynew kbexpertiseadvanced kbtshoot kbmt KB3118695 KbMtde
Feedback