Passer au contenu du pied de page
Iron Academy Logo
Application C#
Application C#

Autres catégories

Messages d'état en temps réel et Spinners - Spectre Console Series

Tim Corey
9m 31s

Spectre Console est une puissante bibliothèque .NET qui vous permet de créer de superbes applications de console sans quitter C#. Dans sa série de vidéos, Tim Corey présente une à une les fonctionnalités de ces outils. Dans cette vidéo intitulée "Live Status Messages and Spinners - Spectre Console Series", Tim se concentre sur Spectre Console Status, un outil permettant d'afficher des messages d'état en direct et des spinners animés pendant qu'une application console exécute une tâche de longue durée.

Dans cet article, nous allons examiner plus en détail la fonction d'état de la console Spectre en suivant les explications de Tim. Vous verrez comment Tim met en place un spinner de chargement simple, puis le personnalise, et enfin l'utilise dans un exemple asynchrone plus réaliste pour télécharger des données. À la fin de la démo, vous verrez comment Spectre Console permet de donner à l'utilisateur des informations claires sur ce qui se passe en coulisses.

Débuter avec un exemple de statut plus simple (0:31)

Tim commence par montrer les exemples les plus simples de message d'état. Il appelle :

AnsiConsole.Status()
    .Start("Chargement...", ctx =>
    {
        Thread.Sleep(3000) ;
    }) ;

Il s'agit de la manière la plus simple d'ajouter un indicateur d'état à un projet de console. Il explique qu'à l'intérieur des accolades, vous pouvez exécuter n'importe quelle commande ou n'importe quel code qui prend du temps. Pour la démo, Tim utilise simplement un sommeil de trois secondes pour simuler une opération lente.

Lorsque vous exécutez cette application console, vous voyez immédiatement la chaîne "Loading..." sur la ligne ainsi qu'un spinner par défaut. Cette démonstration rapide montre comment Spectre Console peut transformer une simple invite en quelque chose de plus dynamique.

Spectre Console Live Status Spinners 1 related to Débuter avec un exemple de statut plus simple (0:31)

Personnalisation de la roulette - Types pris en charge (1:54)

À 1:54, Tim passe à la personnalisation. Spectre Console est livré avec une longue liste de types de spinners intégrés, et vous pouvez les modifier avec :

ctx.Spinner = Spinner.Known.Aesthetic ;

Il fait défiler les types disponibles et choisit "Esthétique" pour montrer que le format du spinner peut être modifié facilement. Ce genre de petit changement donne déjà à votre application console une allure plus soignée.

Spectre Console Live Status Spinners 2 related to Personnalisation de la roulette - Types pris en charge (1:54)

Tim souligne également à 2:39 que tous les terminaux ne prennent pas en charge l'intégralité de tous les spinners. Si vous travaillez dans Visual Studio, il se peut que vous voyiez une animation de repli. C'est la façon dont Spectre Console gère les erreurs de manière élégante : elle choisit automatiquement un spinner plus simple qui correspond à votre environnement, afin que l'utilisateur reçoive toujours un retour d'information.

Pourquoi cela facilite les applications de console pour l'utilisateur (3:07)

À 3:07, Tim fait une pause pour expliquer pourquoi cette fonctionnalité est importante. Si votre application crée ou télécharge des fichiers, traite des données ou effectue toute autre tâche fastidieuse, un message d'état accompagné d'un curseur "indique à l'utilisateur qu'il se passe quelque chose" Sans ce message, une console vide peut sembler figée.

Tim insiste sur le fait que lorsque la tâche est terminée, le statut disparaît, ne laissant derrière lui que les informations relatives au résultat. Cela permet à votre application console de rester propre et informative à la fois.

Attendre AnsiConsole pour le travail asynchrone (3:24)

Jusqu'à présent, Tim a utilisé Start(). Mais dans les applications réelles, vous attendez probablement des opérations. À 3:34, il passe à :

attendre AnsiConsole.Status()
    .StartAsync("Chargement...", ctx async =>
    {
        // travail asynchrone
    }) ;

Cette petite modification - l'utilisation de await AnsiConsole et de .StartAsync() - vous permet d'exécuter du code asynchrone à l'intérieur du bloc d'état. Tim prévient à 4:02 que le contexte à l'intérieur n'est pas à l'abri des threads pour les mises à jour de l'interface utilisateur. Revenez toujours au fil de l'interface utilisateur pour modifier la barre de défilement ou le texte d'état. Cette vérification permet d'éviter les erreurs étranges lorsque vous essayez de faire une mise à jour à partir d'un autre fil de discussion.

Downloading Data in a Loop - A More Realistic Demo (4:26) (en anglais)

Ensuite, Tim crée une boucle pour simuler une tâche réelle : le téléchargement de 20 cours à partir d'une API. Il réécrit le code pour qu'il ressemble à ceci :

for (int i = 1 ; i < 21 ; i++)
{
    ctx.Status($"Télécharger le cours {i}...") ;
    var jsonResponse = await Helpers.Fetch($"https://sample.com/courses/{i}") ;
    AnsiConsole.MarkupLine($"[red]Cours {i} téléchargé[/]") ;
}

Ici, il montre trois fonctionnalités importantes de la Spectre Console qui fonctionnent ensemble :

  • Context.Status() modifie de manière dynamique la chaîne d'état affichée à côté de la roue.

  • await Helpers.Fetch(...) représente une tâche asynchrone réelle dans votre application console.

  • AnsiConsole.MarkupLine() utilise le balisage de Spectre pour ajouter des couleurs. Tim choisit \N-[red\N] juste "pour avoir quelque chose d'amusant à faire"

Cet exemple montre qu'il est facile d'ajouter un retour d'information sur la progression d'un projet sans code complexe.

Voir l'application en cours d'exécution (7:21)

Lorsque Tim exécute le nouveau code, vous voyez une toupie verte (de type Esthétique dans son thème) et le texte d'état devient "Téléchargement du cours 1...", "Téléchargement du cours 2...", etc. À la fin de chaque téléchargement, une ligne rouge apparaît : "Cours 1 téléchargé", "Cours 2 téléchargé"

Spectre Console Live Status Spinners 3 related to Voir l'application en cours d'exécution (7:21)

Tim fait remarquer qu'il s'agit d'un excellent moyen de suivre des tâches telles que le téléchargement de données ou le traitement de fichiers. "Vous laissez derrière vous les messages de résultats, mais vous n'avez plus ce message d'attente avec le téléchargement", explique-t-il à 7:27.

Spectre Console Live Status Spinners 4 related to Voir l'application en cours d'exécution (7:21)

Synchrone ou asynchrone - Pas de différence de performance (8:00)

À 20 heures, Tim aborde la question de la performance. L'utilisation de Start() au lieu de StartAsync() ne modifie pas la vitesse d'animation du spinner. La seule chose qui compte, c'est que votre code soit asynchrone. Si vous utilisez await, vous avez besoin de .StartAsync() ; sinon, .Start() est parfait.

Cela signifie que vous pouvez ajouter un retour d'état à votre application console sans craindre de la ralentir. Il s'agit simplement d'envelopper le travail que vous êtes déjà en train de faire.

Filières intégrées et personnalisées - Une longue liste à vérifier (8:45)

En guise de conclusion, Tim souligne que la console Spectre offre des "tonnes" d'outils d'épuration intégrés. Vous pouvez faire défiler la liste et choisir celle qui vous convient le mieux, qu'il s'agisse de points, de flèches ou d'"esthétique" Plus loin dans la série, Tim montrera comment créer un spinner personnalisé afin de l'adapter à la marque ou aux couleurs de votre application.

Cette flexibilité fait partie de ce qui fait de Spectre Console un excellent outil pour créer de belles applications de console. Elle vous offre un retour d'information sur la progression, une sortie rapide et des visuels dynamiques sans réinventer la roue.

Conclusion - Spectre Console Status en action (9:07)

En suivant la vidéo de Tim Corey, nous avons vu comment utiliser Spectre Console Status pour améliorer une application console .NET :

  • Utilisez AnsiConsole.Status().Start() ou attendez AnsiConsole.Status().StartAsync() pour afficher un spinner et un texte d'état pendant l'exécution d'une tâche.

  • Mettez à jour le context.Status() dynamiquement à l'intérieur de votre boucle.

  • Résultats de sortie avec AnsiConsole.MarkupLine() et Spectre pour le rouge, le vert ou d'autres couleurs.

  • Choisissez parmi une liste intégrée de spinners ou créez le vôtre ultérieurement.

  • Fournir des informations claires à l'utilisateur tout en gardant la console propre.

Ces petites touches peuvent transformer un projet de console ordinaire en une belle application de console. La fonction d'état de Spectre Console simplifie le partage des progrès, la vérification des résultats et rend l'invite de votre application plus conviviale et plus interactive.

Hero Worlddot related to Messages d'état en temps réel et Spinners - Spectre Console Series
Hero Affiliate related to Messages d'état en temps réel et Spinners - Spectre Console Series

Gagnez plus en partageant ce que vous aimez

Vous créez du contenu pour les développeurs travaillant avec .NET, C#, Java, Python ou Node.js ? Transformez votre expertise en revenu supplémentaire !

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi