Maison >développement back-end >C++ >Puis-je rendre la méthode principale de mon application de console asynchrone?

Puis-je rendre la méthode principale de mon application de console asynchrone?

Susan Sarandon
Susan Sarandonoriginal
2025-02-01 16:56:10858parcourir

Can I Make My Console Application's Main Method Asynchronous?

La méthode principale asynchrone dans l'application de la console

Lorsque vous essayez de définir la méthode principale de l'application de console sur Asynchrone, une erreur peut être rencontrée: "La méthode principale qui ne peut pas spécifier le modificateur" async "dans la méthode principale de l'application de console".

Le compilateur limite

Historiquement, le compilateur Visual Studio limite l'utilisation du modificateur asynchrone sur la méthode principale. Il s'agit d'empêcher la mise en œuvre asynchrone du comportement de synchronisation naturelle du programme de console.

Le support de la principale asynchrone

Cependant, en commençant par Visual Studio 2017 Update 3 (15.3), C # prend en charge la méthode principale asynchrone, tant qu'ils renvoient la tâche ou la tâche . Cela permet la structure de code suivante:

Comprendre le comportement

<code class="language-csharp">class Program
{
    static async Task Main(string[] args)
    {
        // 异步代码在此处
    }
}</code>
Dans la méthode principale asynchrone, l'indication de mot-clé "Await" peut attendre l'objet (par exemple, la tâche) pour terminer la méthode, puis revenir à la méthode. Cependant, dans l'application de la console, le retour de la méthode principale se retirera de la procédure.

Évitez que la procédure sortait

Afin d'empêcher la procédure de quitter, il est nécessaire de fournir un contexte compatible avec la compatibilité asynchrone pour la méthode principale. Ce contexte maintient le programme dans un état d'activité pendant le fonctionnement de l'opération asynchrone.

L'option de contexte

Bibliothèque NuGet:

Utilisez le sac AsyncConText dans Nito.Asyncex Nuget Bag.

CTP asynchrone: GoneralthreaFineContext dans le CTP asynchrone (si disponible).

    Boucle principale personnalisée:
  • Utilisez AsyncConText ou CTP asynchrone pour réaliser votre propre propriétaire de projet.
  • entraver le thread principal de
  • Une autre méthode consiste à bloquer le fil de console principal jusqu'à ce que le travail asynchrone soit terminé:
  • Remarque: getAwaitter ().

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