Преминаване към основното съдържание
Поддръжка
Влизане с Microsoft
Влезте или създайте акаунт.
Здравейте,
Изберете друг акаунт.
Имате няколко акаунта
Изберете акаунта, с който искате да влезете.

Симптоми

.NET Framework 4.6 добавена нова enum тип RunContinuationsAsynchronouslyза TaskCompletionSource и TaskCreationOptions enums. Тази стойност кара задачи да се изпълняват асинхронно и това помага да се избегне блокиране ситуации. Обаче е открил проблем, за някои конкретни видове удължаване (по-специално Task.WhenAll, Task.WhenAnyили TaskExtensions.Unwrap създадете удължаване), опцията се игнорира. Затова удължаване все още могат да изпълняват синхронно.

Следният примерен показва проблема. Ако стойността на RunContinuationsAsynchronously са функционира правилно, две нишка идентификатори, които се отпечатват, никога няма да бъде същата, защото продължаването винаги ще бъде планирана върху различни теми.

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

Решение

В момента няма заобиколно решение за този проблем. Екипът на Microsoft .NET Framework работи върху решение за включване в бъдеща актуализация.


Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.

Общностите ви помагат да задавате и отговаряте на въпроси, да давате обратна връзка и да получавате информация от експерти с богати знания.

Беше ли полезна тази информация?

Доколко сте доволни от качеството на езика?
Какво е повлияло на вашия потребителски опит?
Като натиснете „Подаване“, вашата обратна връзка ще се използва за подобряване на продуктите и услугите на Microsoft. Вашият ИТ администратор ще може да събира тези данни. Декларация за поверителност.

Благодарим ви за обратната връзка!

×