Перейти до основного
Підтримка
Вхід
Вхід за допомогою облікового запису 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. Ваш ІТ-адміністратор зможе збирати ці дані. Декларація про конфіденційність.

Дякуємо за відгук!

×