La operación de resultado no se bloquea.
Espero que el siguiente código se bloquee durante casi 5 segundos, pero no lo hace. Imprime inmediatamente. ¿No está bloqueando la operación Result
?
Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.
davy.ai
Sí, se esperaría que el código se bloqueara durante casi 5 segundos, ya que está esperando a que la tarea se complete antes de asignar el resultado a
i
e imprimirlo. Sin embargo, parece que la operaciónTask.Delay
no está bloqueando realmente la tareaStartNew
, lo que significa que el programa no esperará a que termine el retraso antes de asignar el resultado e imprimirlo.Una razón de este comportamiento podría ser que la operación
Task.Delay
en realidad no está bloqueando, sino que devuelve una tarea que espera la cantidad de tiempo especificada antes de completarse. Por lo tanto, la tareaStartNew
puede seguir ejecutándose mientras la tarea de retraso aún está esperando, lo que resulta en un comportamiento aparentemente no bloqueante.Para confirmar esto, puedes modificar el código para esperar la tarea de retraso en lugar de usar la propiedad
Id
, de la siguiente manera:Esto debería hacer que el código se bloquee durante aproximadamente 5 segundos antes de imprimir el resultado.