Maison >développement back-end >C++ >Attendre tâche.run () vs tâche de retour.run (): quelles sont les principales différences dans la programmation asynchrone C #?
C # Programmation asynchrone
La différence clé entre await Task.Run()
return Task.Run()
Dans la programmation asynchrone, il est souvent nécessaire d'effectuer des opérations en dehors du thread d'interface utilisateur pour éviter l'application de l'application. Cela peut être réalisé grâce à la tâche en C #. Cependant, il existe des différences subtiles entre
lorsqu'ils traitent des anomalies et d'autres aspects. await Task.Run()
return Task.Run()
<.> 1. Disposition:
La principale différence est cette communication anormale. Dans situation:
Les anomalies de la tâche asynchrone ne diffuseront la méthode de rappel que lorsque vous attendez la tâche. await Task.Run()
return Task.Run()
Cela peut entraîner des erreurs accidentelles et des blocages potentiels.
au contraire, la version ne dépend pas du contexte de la synchronisation. Poursuivant l'arrangement du programme de planification de tâches par défaut, qui peut être différent du contexte de synchronisation des threads d'appel.
<.> 3. Le code généré: await Task.Run()
return Task.Run()
Exemple de code:
L'exemple de code suivant illustre ces différences:
Exemple 1: await Task.Run()
return Task.Run()
Dans ces deux exemples, "DoSomework ()" est une méthode pour effectuer certains travaux en dehors du fil d'interface utilisateur.
Conclusion:
Le choix de et
dépend des besoins spécifiques de l'application. Lors du contrôle de la dissémination anormale et de la garantie du contexte de synchronisation correct est important, il est recommandé d'utiliser<code class="language-csharp">async Task TestAsync() { await Task.Run(() => DoSomeWork()); // 异常在等待时传播回 }</code>. Lorsque ce n'est pas un problème pour répandre les anomalies ou synchroniser immédiatement les contextes,
convient.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!