Bei Microsoft anmelden
Melden Sie sich an, oder erstellen Sie ein Konto.
Hallo,
Wählen Sie ein anderes Konto aus.
Sie haben mehrere Konten.
Wählen Sie das Konto aus, mit dem Sie sich anmelden möchten.

Problembeschreibung

.NET Framework 4.6 hinzugefügt Enumerationen TaskCompletionSource und TaskCreationOptions einen neuen Typ Enumerationswert, RunContinuationsAsynchronously. Dieser Wert gezwungen Aufgaben asynchron ausgeführt, und dies hilft, um Deadlocks zu vermeiden. Allerdings wurde ein Problem entdeckt, für einige bestimmten Arten von folgen (insbesondere beim Erstellen von folgen Task.WhenAll, Task.WhenAnyoder TaskExtensions.Unwrap ) die Option ignoriert. Daher können folgen weiterhin synchron ausgeführt.

Das folgende Beispiel veranschaulicht das Problem. Der Wert RunContinuationsAsynchronously ordnungsgemäß funktionieren, 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();
}
}

Problemlösung

Es gibt keine Abhilfe für dieses Problem. Microsoft.NET Framework-Team arbeitet an einer Lösung in einem zukünftigen Update enthalten.


Benötigen Sie weitere Hilfe?

Möchten Sie weitere Optionen?

Erkunden Sie die Abonnementvorteile, durchsuchen Sie Trainingskurse, erfahren Sie, wie Sie Ihr Gerät schützen und vieles mehr.

In den Communities können Sie Fragen stellen und beantworten, Feedback geben und von Experten mit umfassendem Wissen hören.

War diese Information hilfreich?

Wie zufrieden sind Sie mit der Sprachqualität?
Was hat Ihre Erfahrung beeinflusst?
Wenn Sie auf "Absenden" klicken, wird Ihr Feedback zur Verbesserung von Produkten und Diensten von Microsoft verwendet. Ihr IT-Administrator kann diese Daten sammeln. Datenschutzbestimmungen.

Vielen Dank für Ihr Feedback!

×