"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Async / Await en C #: Quand retourner la tâche vs void?

Async / Await en C #: Quand retourner la tâche vs void?

Publié le 2025-03-23
Parcourir:694

Async/Await in C#: When to Return Task vs. Void?

return valeur de méthode async dans C # programming asynchrone: tâche ou void ?

Lors de la programmation de manière asynchrone à l'aide de C #, la méthode async peut retourner tâche ou void . Ce choix est crucial car il détermine le comportement de la méthode et comment il interagit avec le code d'appel.

Quand reviendra tâche

]

Habituellement, lorsque vous souhaitez exposer les progrès ou le résultat d'une opération asynchrone à l'appelant, vous devez retourner tâche . Cela permet à l'appelant d'attendre la tâche et de continuer l'exécution une fois sa fin. Le retour tâche peut également utiliser des modes d'exception et des modes asynchrones, tels que async-forach , où la progression de plusieurs tâches peut être surveillée.

Quand reviendra void

]

Le seul cas approprié pour retourner void de la méthode async est lorsque vous avez explicitement besoin du type de return , comme dans un gestionnaire d'événements ou un rappel UI. Dans ces cas, l'appelant ne doit pas être en mesure d'attendre la méthode, et les mots clés asynchronisés et attendent . Évitez le niveau supérieur

async void

méthode méthodes marquées

async void

ont une sémantique spéciale et doivent être utilisées avec prudence. Ils représentent des opérations asynchrones de niveau supérieur et ont des règles de traitement des exceptions différentes des méthodes qui renvoient les tâches. Les exceptions au niveau supérieur void sont traitées comme des exceptions non perdues et peuvent conduire à un comportement inattendu. Par exemple, considérez le code suivant:

public static async void asyncMethod2 (int num) { attendre tâche.factory.startNew (() => thread.sleep (num)); }
public static async void AsyncMethod2(int num)
{
    await Task.Factory.StartNew(() => Thread.Sleep(num));
}
async void

est inutile et peut être problématique car:

Il empêche l'appelant d'attendre la méthode et de surveiller ses progrès.
    Les exceptions dans la méthode
  1. ne seront pas gérées et peuvent faire en sorte que l'application se comporte anormalement.
  2. Il est préférable d'utiliser la méthode
tâche asynchrone

et le mot-clé Await pour assurer la gestion correcte des exceptions et maintenir la possibilité de suivre et de gérer les opérations asynchrones.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3