Aplica-se a
.NET Framework 4.6.1

Sintomas

O.NET Framework 4.6 adicionado um novo valor de tipo enum, RunContinuationsAsynchronously, para enums TaskCompletionSource e TaskCreationOptions . Este valor força tarefas para serem executadas de forma assíncrona e isso ajuda a evitar situações de bloqueio. No entanto, foi descoberto um problema em que, para alguns tipos específicos de continuação (em particular quando a continuação de criar WhenAll, Task.WhenAnyou TaskExtensions.Unwrap ), a opção será ignorada. Portanto, continuação pode ainda executados de forma síncrona.O exemplo a seguir mostra o problema. Se o valor de RunContinuationsAsynchronously estava funcionando corretamente, o segmento de duas identificações são impressos nunca seria o mesmo, pois a continuação sempre deve ser agendada em threads diferentes.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(); }}

Resolução

No momento, não há nenhuma solução alternativa para esse problema. A equipe do Microsoft.NET Framework está trabalhando em uma solução para incluir em uma atualização futura.

Precisa de mais ajuda?

Quer mais opções

Explore os benefícios da assinatura, procure cursos de treinamento, saiba como proteger seu dispositivo e muito mais.