Quelle serait la meilleure façon de convertir/envelopper une méthode asynchrone "classique" qui utilise un callback en quelque chose qui renvoie une tâche (attendable) ?
Par exemple, étant donné la méthode suivante :
public void GetStringFromUrl(string url, Action<string> onCompleted);
La seule façon que je connaisse pour intégrer cela dans une méthode renvoyant une tâche est la suivante :
public Task<string> GetStringFromUrl(string url)
{
var t = new TaskCompletionSource<string>();
GetStringFromUrl(url, s => t.TrySetResult(s));
return t.Task;
}
Est-ce le seul moyen d'y parvenir ?
Existe-t-il un moyen d'envelopper l'appel à GetStringFromUrl(url,callback) dans la tâche elle-même (c'est-à-dire que l'appel lui-même s'exécuterait dans la tâche au lieu d'être synchrone) ?