async / await : appeler une méthode async depuis une méthode non async

C#

C#
Parfois il est nécessaire d’appeller une méthode async depuis une méthode qui n’est pas marquée async, par exemple lors d’une implémentation de version synchrone d’une méthode asynchrone.

Pour cela, il est possible de fabriquer une tâche synchrone en recourant à une fonction lambda asynchrone.

Par exemple, soit la méthode asynchrone suivante, prenant un paramètre de type string et retournant une valeur de type string :

class TestClass {
    public static async Task<string> TestMethodAsync(string parameter) {
        ...
    }
}

L’appel de la méthode sans async pourra s’écrire:

public void TestMethod {
    var task = Task.Run<string>(async () => await TestClass.TestMethod("a_string"));
    var res = task.Result;  // le résultat est traité comme habituellement avec les tâches
}


Laisser un commentaire