J'ai une question stupide de demander à chacun d'apprendre de meilleures pratiques types de retour async dans C #. J'ai une méthode comme celle-ci:
public virtual async Task OnConnected(WebSocket socket, HttpContext context) { string connectionId = CreateConnectionId(context); ConnectionManager.AddSocket(connectionId, socket); //Question is here await what ? }
3 Réponses :
S'il n'y a rien à pourquoi ne rien faire? P> parce que lorsque vous placez un ou vous pouvez supprimer le mon conseil serait être de faire le premier, (ne rien faire) p> Toutefois, si vous alliez aller la deuxième approche, il serait préférable de placer toutes les exceptions sur la tâche retournée em> tout comme les Async et attendre le motif em> serait. p> attendre code> et ceci est une méthode remplacée. Il suffit d'ignorer l'avertissement du compilateur (ou
pragma code> est sorti) et ne faites rien) et ne faites rien.
async code> Sur une méthode, le compilateur place automatiquement toute exception sur la tâche pour vous. p>
async code> et renvoyer une tâche complétée em> p>
Je me souviens que dans ce lien: markheath.net/post/async-antifatterns a dit que l'anti- Le motif est d'essayer de prendre sans attendre. Est-ce que ça va pour ce cas
@Khanhtuong si la méthode n'est pas async code> alors vous ne pouvez pas
attendre code>. Toutefois, dans le deuxième exemple, nous marquons que nous placons des exceptions sur la tâche de la même manière que l'async async et l'attente de modèle i> .. une fois encore, si vous n'êtes pas sûr dans ce cas, ne faites rien
Si vous n'avez aucune opération asynchrone à attendre, vous pouvez également faire la méthode de méthode synchrone normale. Si vous faites une méthode async, il est donc bon de nommer la méthode de telle sorte qu'il se termine par ASYNC comme OnconnecteAsync. P>
Généralement, vous utilisez des méthodes asynchronisées / attendre lorsque vous avez des opérations d'E / S (comme accès au fichier, téléchargement Web / téléchargement) pouvant être effectuée indépendamment de votre logique de programme. Mettez simplement le flux de contrôle va comme, P>
Vous pouvez parcourir de nombreuses vidéos de tutoriels sur YouTube sur Async / Await. P>
Apprenez quelques meilleures pratiques Types de retour ASYNC en C #. P> blockQuote>
La première règle de
async code> est "ne l'utilise pas à moins que vous n'ayez besoin." La deuxième règle est "Commencez par
attendre code>, pas
async code>". P>
Cette partie de la question est incorrecte: p>
// question est ici attendu quoi? p> blockQuote>
au lieu de commencer avec
async code> et d'essayer de "rendre le code asynchrone", vous devez commencer à l'extrémité opposée: identifier ce qui est naturellement em> asynchrone (c'est-à-dire ce que vous avez Devrait
attendre code>) d'abord. Vous avez besoin de quelque chose sur
attendre code> avant em> faire votre code asynchrone. P>
vous devrait em> utiliser
attendre code> si vous avez des travaux naturellement asynchrones à faire. Ceci est généralement basé sur des I / O, donc si vous appelez une API ou si vous faites une requête de base de données, ce serait quelque chose qui peut être rendu asynchrone. Une fois que vous avez identifié l'appel d'E / S à bas niveau, modifiez la méthode pour appeler la version asynchrone de cette API et ajouter un
attendre code>. Le compilateur vous guidera à partir de là, modifiant la méthode contenant le
attendre code> pour être
async code> et modifier son type de retour à partir de
vide code> à
Tâche code> ou
t code> à
tâche
code>. Ensuite, Laissez async code> /
. p>attendre code> se développer naturellement via votre codebase
" question est ici attendre ce que i>" rien, vous n'avez rien à attendre ici (que vous avez montré), car il se trouve cette méthode n'a pas besoin de renvoyer une tâche code> ou être
async code>. En outre, nous nous demandons de ne pas dire que la bowevote est une invitation ouverte à la bowevote
Votre méthode a-t-elle une certaine implémentation asynchrounour ou appeler des méthodes sont asynchronisées?
@ EHSAN SAJJAD: Ma méthode n'a pas d'async logique et cette méthode est remplacée de la classe de base a un modificateur ASYNC
Peut-être une petite lecture ferait :) Async Tâches < / a>
Même si vous avez dit de ne pas frapper, mais une question comme celle-ci prouve que vous n'avez effectué aucune recherche sur Async-attendre et attendre que quelqu'un vous nourrit. Le Créateur de C #, MS a leur propre aide pour vous. docs.microsoft.com/en-us/archive/msdn-magazine/2013/march/... ou peut être moyen.com/@deep_blue_day/...
@ Michael Randall: Ma méthode n'a pas de logique ASYNC et cette méthode est remplacée de la classe de base contient un modificateur ASYNC et un avertissement IDE Cette méthode doit avoir un modificateur ASYNC. Devrais-je attendre la tâche.delay (0) ou attendre la tâche.comPletedTask, est-ce que ça va?
tks tellement
@ Codeur sans cerveau sans cervelle: J'ai déjà étudié de quelques meilleures pratiques, mais je n'ai plus d'expérience à ce sujet et j'aimerais poster pour demander à quelqu'un de m'aider et que je suis très heureux. BTW TKS pour votre aide et vos ressources