Wait (), hará que se ejecute el código potencialmente asíncrono de manera sincronizada. esperar no lo hará.
Por ejemplo, tiene una aplicación web asp.net. UsuarioA llama / getUser / 1 punto final. El grupo de aplicaciones asp.net elegirá un hilo del grupo de hilos (Thread1) y este hilo hará una llamada http. Si espera Wait (), este hilo se bloqueará hasta que se resuelva la llamada http. Mientras está esperando, si UserB llama / getUser / 2, entonces, el grupo de aplicaciones necesitará servir otro hilo (Thread2) para volver a hacer una llamada http. Acaba de crear (Bueno, en realidad se obtuvo del grupo de aplicaciones) otro subproceso sin razón, porque no puede usar Thread1 que fue bloqueado por Wait ().
Si usa await en Thread1, SyncContext gestionará la sincronización entre Thread1 y la llamada http. Simplemente, notificará una vez que se realice la llamada http. Mientras tanto, si UserB llama / getUser / 2, entonces usará Thread1 nuevamente para hacer una llamada http, porque fue liberada una vez que estaba esperando que la golpearan. Luego, otra solicitud puede usarlo, aún más. Una vez que se realiza la llamada http (usuario1 o usuario2), Thread1 puede obtener el resultado y regresar a la persona que llama (cliente). Thread1 se usó para múltiples tareas.
Task
que demore 10 ms realmente ejecute una duración de 10 horasTask
en su hilo, bloqueándolo durante las 10 horas completas?