Iniciar sesión con Microsoft
Iniciar sesión o crear una cuenta
Hola:
Seleccione una cuenta diferente.
Tiene varias cuentas
Elija la cuenta con la que desea iniciar sesión.

Síntomas

La 4.6 de.NET Framework, se agrega un nuevo valor de tipo enum, RunContinuationsAsynchronously, a las enumeraciones TaskCompletionSource y TaskCreationOptions . Este valor obliga a las tareas se ejecuten de forma asincrónica y, esto ayuda a evitar situaciones de interbloqueo. Sin embargo, se ha descubierto un problema donde, para algunos tipos específicos de continuaciones (en particular cuando las continuaciones se crean Task.WhenAll, Task.WhenAnyo TaskExtensions.Unwrap ), se omitirá la opción. Por lo tanto, las continuaciones aún ejecutan sincrónicamente.

El ejemplo siguiente muestra el problema. Si el valor de RunContinuationsAsynchronously se funciona correctamente, los identificadores que se imprimen fuera de subproceso dos nunca sería el mismo, ya que siempre se debería programar la continuación en subprocesos 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();
}
}

Solución

Actualmente no hay ninguna solución para este problema. El equipo de Microsoft.NET Framework está trabajando en una solución para incluir en una futura actualización.


¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.

Las comunidades le ayudan a formular y responder preguntas, enviar comentarios y leer a expertos con conocimientos extensos.

¿Le ha sido útil esta información?

¿Cuál es tu grado de satisfacción con la calidad del lenguaje?
¿Qué ha afectado a su experiencia?
Si presiona Enviar, sus comentarios se usarán para mejorar los productos y servicios de Microsoft. El administrador de TI podrá recopilar estos datos. Declaración de privacidad.

¡Gracias por sus comentarios!

×