IRONSOFTWAREHOME

Wiadomości statusu na żywo i spinnery - seria Spectre Console

Live Status Messages and Spinners - Spectre Console Series

Tim Corey

9m 31s

Spectre Console to potężna biblioteka .NET, która pozwala tworzyć piękne aplikacje konsolowe bez opuszczania środowiska C#. W swoim cyklu wideo Tim Corey przechodzi przez jego funkcje krok po kroku. W tym wideo "Live Status Messages and Spinners - Spectre Console Series", Tim skupia się na Spectre Console Status, narzędziu do pokazywania wiadomości o stanie na żywo i animowanych spinnerów podczas gdy aplikacja konsolowa wykonuje zadanie długoterminowe.

W tym artykułe przyjrzymy się bliżej funkcji statusu Spectre Console, śledząc wyjaśnienia Tima. Zobaczysz, jak Tim najpierw ustawia prosty spinner ładowania, następnie dostosowuje go, a na końcu używa go w bardziej realistycznym, asynchronicznym przykładzie do pobierania danych. Pod koniec pokazu zobaczysz, jak Spectre Console ułatwia przekazywanie użytkownikowi jasnych informacji o tym, co dzieje się w tle.

Zaczynamy od prostszego przykładu statusu (0:31)

Tim zaczyna od pokazania najprostszych przykładów wiadomości o statusie. Wywołuje:

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

To najprostszy sposób, aby dodać wskaźnik statusu do projektu konsolowego. Wyjaśnia, że wewnątrz klamr można wykonać dowolne polecenia lub uruchomić dowolny kod, który zajmuje czas. W pokazie Tim używa tylko trzysekundowego sleep, aby zasymulować powolną operację.

Podczas uruchamiania tej aplikacji konsolowej natychmiast widać napis "Ładowanie…" na linii wraz z domyślnym spinnerem. Ten szybki pokaz demonstruje, jak Spectre Console może przekształcić nawet zwykły prompt w coś bardziej dynamicznego.

Dostosowywanie spinnera – Obsługiwane typy (1:54)

O 1:54 Tim przechodzi do dostosowywania. Spectre Console ma długą listę wbudowanych typów spinnerów, które można zmienić za pomocą:

ctx.Spinner = Spinner.Known.Aesthetic;
Text

Przewija dostępne typy i wybiera "Aesthetic", aby pokazać, że format spinnera można łatwo zmienić. Tego typu mała zmiana już sprawia, że aplikacja konsolowa wygląda bardziej dopracowana.

Tim zauważa również o 2:39, że nie każdy terminal w pełni wspiera każdy spinner. Jeżeli pracujesz w Visual Studio, możesz zobaczyć zapasową animację. To sposób Spectre Console na eleganckie obsługiwanie błędów — automatycznie wybiera prostszy spinner, który działa w Twoim środowisku, dzięki czemu użytkownik nadal otrzymuje feedback.

Dlaczego to ułatwia użytkowanie aplikacji konsolowych (3:07)

O 3:07 Tim przerywa, aby wyjaśnić, dlaczego ta funkcja ma znaczenie. Jeśli Twoja aplikacja tworzy lub pobiera pliki, przetwarza dane lub robi cokolwiek czasochłonnego, wiadomość o statusie ze spinnerem "informuje użytkownika, że coś się dzieje." Bez niej, pusta konsola mogłaby wyglądać na zamrożoną.

Tim podkreśla, że gdy zadanie się zakończy, status znika, pozostawiając jedynie informacje o wynikach. To pomaga utrzymać aplikację konsolową zarówno czystą, jak i informacyjną.

Przechodzenie do Await AnsiConsole do pracy asynchronicznej (3:24)

Do tego momentu Tim używał Start(). Jednak w rzeczywistych aplikacjach prawdopodobnie czekasz na operacje. O 3:34 przechodzi do:

await AnsiConsole.Status()
    .StartAsync("Ładowanie...", async ctx =>
    {
        // praca asynchroniczna
    });
Text

Ta mała zmiana — użycie await AnsiConsole i .StartAsync() — pozwala uruchomić kod asynchroniczny wewnątrz bloku statusu. Tim ostrzega o 4:02, że kontekst wewnątrz nie jest bezpieczny wątkowo dla aktualizacji UI. Zawsze "wracaj do wątku UI", aby zmienić spinner lub tekst statusu. Ta kontrola unika dziwnych błędów, gdy próbujesz aktualizować z innego wątku.

Pobieranie danych w pętli – Bardziej realistyczna demonstracja (4:26)

Następnie Tim tworzy pętlę, aby zasymulować zadanie z rzeczywistego świata: pobieranie 20 kursów z API. Przepisuje kod, aby wyglądał tak:

for (int i = 1; i < 21; i++)
{
    ctx.Status($"Pobieranie kursu {i}...");
    var jsonResponse = await Helpers.Fetch("https://sample.com/courses/{i}");
    AnsiConsole.MarkupLine("[red]Kurs {i} pobrany[/]");
}
Text

Tutaj pokazuje trzy ważne funkcje Spectre Console działające razem:

  • Context.Status() dynamicznie zmienia tekst statusu pokazywany obok spinnera.

  • await Helpers.Fetch(...) reprezentuje prawdziwe zadanie asynchroniczne wewnątrz Twojej aplikacji konsolowej.

  • AnsiConsole.MarkupLine() używa znaczników Spectre do dodawania kolorów. Tim wybiera [red] tylko "żeby robić coś zabawnego."

Ten przykład pokazuje, jak łatwo można dodać feedback o postępie do projektu bez skomplikowanego kodu.

Obejrzenie działającej aplikacji (7:21)

Gdy Tim uruchamia nowy kod, widzisz zielony spinner (typ Aesthetic w jego motywie) i tekst statusu zmieniający się na "Pobieranie kursu 1…," "Pobieranie kursu 2…," itd. Gdy każde pobieranie się kończy, pojawia się czerwona linia: "Kurs 1 pobrany," "Kurs 2 pobrany."

Tim zauważa, że to świetny sposób na śledzenie zadań, takich jak przesyłanie danych czy przetwarzanie plików. "Pozostawiasz za sobą wiadomości o wynikach, ale nie ma już tej wiadomości o czekaniu na pobieranie," wyjaśnia o 7:27.

Synchronizacyjne vs. Asynchronizacyjne – Brak różnicy w wydajności (8:00)

O 8:00 Tim porusza kwestię wydajności. Użycie Start() w porównaniu do StartAsync() nie wpływa na to, jak szybko animuje się spinner. To ma znaczenie tylko wtedy, gdy kod wewnętrzny jest asynchroniczny. Jeśli używasz await, potrzebujesz .StartAsync(); w przeciwnym razie, .Start() wystarczy.

Oznacza to, że możesz dodać feedback o statusie do swojej aplikacji konsolowej bez obaw o spowolnienie jej działania. Po prostu otacza to, co już robisz.

Wbudowane i niestandardowe spinnery – Długa lista do sprawdzenia (8:45)

Kończąc, Tim podkreśla, że Spectre Console oferuje "mnóstwo" wbudowanych spinnerów. Możesz przeglądać listę i wybrać ten, który Ci się podoba — wszystko od kropek do strzałek do "estetycznych." Później w serii Tim pokaże, jak stworzyć własny spinner, aby móc w pełni dopasować branding lub kolory Twojej aplikacji.

Ta elastyczność jest częścią tego, co sprawia, że Spectre Console to świetne narzędzie do budowania pięknych aplikacji konsolowych. Daje Ci feedback o postępie, wyjście promp, i dynamiczne wizualizacje bez ponownego wymyślania koła.

Podsumowanie – Spectre Console Status w akcji (9:07)

Podążając za wideo Tima Coreya, zobaczyliśmy, jak używać Spectre Console Status, aby poprawić aplikację konsolową .NET:

  • Użyj AnsiConsole.Status().Start() lub await AnsiConsole.Status().StartAsync(), aby pokazać spinner i tekst statusu podczas gdy zadanie jest wykonywane.

  • Dynamicznie aktualizuj context.Status() wewnątrz swojej pętli.

  • Wyjście wyników za pomocą AnsiConsole.MarkupLine() i znaczników Spectre dla czerwonego, zielonego lub innych kolorów.

  • Wybierz z wbudowanej listy spinnerów lub stwórz własny później.

  • Dostarcz jasnych informacji użytkownikowi, jednocześnie utrzymując czystość wyjścia konsoli.

Te małe akcenty mogą zamienić zwykły projekt konsolowy w piękną aplikację konsolową. Funkcja statusu Spectre Console ułatwia dzielenie się postępem, sprawdzanie wyników i sprawianie, by prompt Twojej aplikacji był bardziej przyjazny i interaktywny.

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Otrzymaj swoją Konsultację Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta