Maison >développement back-end >C++ >Comment exécuter de manière synchrone une méthode de tâche asynchrone en C #?

Comment exécuter de manière synchrone une méthode de tâche asynchrone en C #?

Linda Hamilton
Linda Hamiltonoriginal
2025-02-01 07:06:09319parcourir

How to Synchronously Execute an Async Task Method in C#?

Exécuter simultanément C # Tâche asynchrone

Méthode Dans la programmation asynchrone,

les mots clés sont utilisés pour faire une pause des méthodes jusqu'à ce que l'opération asynchrone spécifique soit terminée. Cependant, dans certains cas, comme tester ou interagir avec d'autres cadres / composants, la méthode asynchrone peut être nécessaire de manière synchrone.

await Il existe de nombreuses façons d'y parvenir, mais toutes les méthodes ne conviennent pas à toutes les scènes. Voici quelques méthodes courantes:

Méthode 1: Utilisez la tâche.Wait () Méthode

bloquant le thread actuel jusqu'à ce que l'opération asynchrone soit terminée. Mais si la tâche est exécutée sur le même thread qui l'attend, cela peut conduire à une impasse.

Méthode 2: Utilisez la tâche.RunSynachronely () Méthode

Task.Wait()

Exécutez des opérations asynchrones sur le thread actuel sans obstruction. Mais cette méthode exige que la tâche ne soit pas liée à la Commission, ce qui n'est pas toujours possible.
<code class="language-csharp">Task<Customer> task = GetCustomers();
task.Wait();</code>

Méthode 3: Utilisez TaskCompletionsource Class

Task.RunSynchronously() permet des tâches de création manuelle et la compléte une fois l'opération asynchrone terminée.

<code class="language-csharp">Task<Customer> task = GetCustomers();
task.RunSynchronously();</code>

Méthode 4: Utilisez la classe auxiliaire personnalisée Certaines bibliothèques tiers de parties fournissent des méthodes auxiliaires pour exécuter des tâches asynchrones en synchronisation. Par exemple, bibliothèque Asynchepers:

TaskCompletionSource<T> La meilleure façon dépend de scénarios spécifiques et de besoins d'application. Lorsque vous choisissez un mécanisme d'exécution synchrone, assurez-vous de considérer les verrous morts potentiels et les effets de performance.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn