260 votes

Comment écrire une méthode asynchrone avec un paramètre de sortie ?

Je veux écrire une méthode asynchrone avec un paramètre out, comme ceci :

public async void Method1()
{
    int op;
    int result = await GetDataTaskAsync(out op);
}

Comment puis-je faire cela dans GetDataTaskAsync ?

0voto

themefield Points 393

Pour les développeurs qui VEULENT VRAIMENT le garder en paramètre, voici peut-être une autre solution de contournement.

Changez le paramètre en un tableau ou une liste pour encapsuler la valeur réelle. N'oubliez pas d'initialiser la liste avant de l'envoyer dans la méthode. Après avoir été renvoyée, assurez-vous de vérifier l'existence de la valeur avant de la consommer. Codez avec prudence.

-6voto

Vous pouvez faire cela en utilisant TPL (bibliothèque parallèle de tâches) au lieu d'utiliser directement le mot clé await.

private bool CheckInCategory(int? id, out Category category)
{
    if (id == null || id == 0)
        category = null;
    else
        category = Task.Run(async () => await _context.Categories.FindAsync(id ?? 0)).Result;

    return category != null;
}

if(!CheckInCategory(int? id, out var category)) return error

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X