Impossible d’attendre la méthode d’extension async

La situation est assez simple – j’ai écrit une méthode d’extension et l’ai rendue asynchrone avec le type de retour Task . Mais lorsque j’essaie de l’appeler en utilisant wait, le compilateur renvoie une erreur suggérant que la méthode d’extension n’a pas du tout été reconnue comme asynchrone. Voici mon code:

 public static async Task<NodeReference> CreateWithLabel(this GraphClient client, T source, Ssortingng label) where T: class { var node = client.Create(source); var url = ssortingng.Format(ConfigurationManager.AppSettings[configKey] + "/node/{0}/labels", node.Id); var serializedLabel = ssortingng.Empty; using (var tempStream = new MemoryStream()) { new DataContractJsonSerializer(label.GetType()).WriteObject(tempStream, label); serializedLabel = Encoding.Default.GetSsortingng(tempStream.ToArray()); } var bytes = Encoding.Default.GetBytes(serializedLabel); using (var webClient = new WebClient()) { webClient.Headers.Add("Content-Type", "application/json"); webClient.Headers.Add("Accept", "application/json; charset=UTF-8"); await webClient.UploadDataTaskAsync(url, "POST", bytes); } return node; } var newNode = await client.CreateWithLabel(new Task(), "Task"); 

Le message d’erreur exact est le suivant:

L’opérateur ‘wait’ ne peut être utilisé qu’au sein d’une méthode asynchrone. Envisagez de marquer cette méthode avec le modificateur ‘async’ et de changer son type de retour en ‘Task’

Est-ce que je fais quelque chose de mal ou est-ce une limitation de langage / compilateur?

Le message d’erreur est assez clair: la méthode dans laquelle vous appelez la méthode d’extension doit être marquée comme async .

 public Task MyExtension(this ssortingng s) { ... } public async Task MyCallingMethod() { ssortingng result = await "hi".MyExtension(); } 

Relire cette partie devrait avoir beaucoup plus de sens maintenant:

“L’opérateur ‘wait’ ne peut être utilisé qu’au sein d’ une méthode asynchrone.”