peut-il remplacer complètement l'ancienne façon d'utiliser Threads?
Un fil peut faire beaucoup plus de choses utiles. Await est spécialement conçu pour traiter quelque chose qui prend du temps, le plus souvent une demande d'E / S. Ce qui était traditionnellement fait avec un rappel lorsque la demande d'E / S était terminée. L'écriture de code qui repose sur ces rappels est assez difficile, attendre le simplifie grandement.
capable de faire ce qu'un thread peut faire de manière asynchrone?
Grossièrement. Await s'occupe simplement de gérer le retard, sinon il ne fait rien de ce qu'un thread fait. L' expression d' attente , qui se trouve à droite du mot-clé await, est ce qui fait le travail. Idéalement, il n'utilise pas du tout de thread, il publie une demande de pilote et une fois que le pilote a terminé le transfert de données, il génère un rappel de notification d'achèvement. La mise en réseau est de loin l'utilisation la plus courante, des latences de centaines de millisecondes sont courantes et un effet secondaire inévitable des services passant du bureau ou d'un LAN vers le «cloud». L'utilisation de ces services de manière synchrone rendrait une interface utilisateur assez insensible.
ne peut être utilisé qu'avec certaines méthodes comme WebClient.DownloadStringAsync
Non. Vous pouvez l'utiliser avec n'importe quelle méthode qui renvoie une tâche. Les méthodes XxxxAsync () ne sont que des méthodes précuites dans le framework .NET pour les opérations courantes qui prennent du temps. Comme télécharger des données à partir d'un serveur Web.