Altbilgi içeriğine atla
Iron Academy Logo
C# Uygulaması
C# Uygulaması

Diğer Kategoriler

Canlı Durum Mesajları ve Döngüler - Spectre Console Serisi

Tim Corey
9m 31s

Spectre Console, C#'dan ayrılmadan güzel konsol uygulamaları oluşturmanızı sağlayan güçlü bir .NET kütüphanesidir. Video serisinde Tim Corey, özellikleri birer birer ele alır. "Canlı Durum Mesajları ve Spinners - Spectre Console Serisi" adlı bu videoda Tim, bir konsol uygulamasının uzun süren bir görev gerçekleştirirken canlı durum mesajlarını ve animasyonlu dönme işaretlerini gösteren Spectre Console Status özelliğine odaklanır.

Bu makalede Tim'in açıklamalarını takip ederek Spectre Console'un durum özelliğine daha derinlemesine bir bakış atacağız. Önce Tim'in basit bir yükleme işlemi gösteren örneklerini, ardından özelleştirmesini ve son olarak daha gerçekçi, asenkron bir örnekle veriyi indirmek için özelliği nasıl kullandığını göreceksiniz. Demonun sonunda Spectre Console'un kullanıcıya perde arkasında neler olduğunu daha açık şekilde iletmeyi nasıl kolaylaştırdığını göreceksiniz.

Daha Basit Bir Durum Örneği ile Başlamak (0:31)

Tim, en basit durum mesajı örneklerini göstererek başlar. Cagirir:

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

Konsol projenize durum göstergesi eklemenin en dogrudan yolu budur. Kıvırcık parantezler içindeki tüm komutları çalıştırabilir veya zaman alan herhangi bir kod calistirabilirsiniz. Demo icin, Tim yavas bir işlemi simule etmek için sadece üç saniyelik bir uyku kullanır.

Bu konsol uygulamasını çalıştırdığınızda, hemen bir varsayılan dönme işaretiyle birlikte satırda "Yükleniyor..." dizisini görürsünüz. Bu hızlı demo, Spectre Console'un, hatta düz bir istemi bile daha dinamik bir şeye nasıl dönüştürebileceğini gösterir.

Spectre Console Live Status Spinners 1 related to Daha Basit Bir Durum Örneği ile Başlamak (0:31)

Dönme İşaretini Özelleştirme – Desteklenen Türler (1:54)

Saat 1:54'te Tim özelleştirmeye geçer. Spectre Console, yerleşik dönme simgesi türleriyle birlikte gelir ve bunları şu şekilde değiştirebilirsiniz:

ctx.Spinner = Spinner.Known.Aesthetic;

Mevcut türlerde gezinir ve dönme işaretinin formatının kolayca değiştirilebileceğini göstermek için "Estetik" seçer. Bu tür küçük bir değişiklik bile konsol uygulamanizin daha düzenli görünmesini sağlar.

Spectre Console Live Status Spinners 2 related to Dönme İşaretini Özelleştirme – Desteklenen Türler (1:54)

Tim, 2:39'da her terminalin her dönme işaretini tam olarak desteklemediğini de belirtir. Eğer Visual Studio içinde çalışiyorsanız, bir yedek animasyon görebilirsiniz. Bu, Spectre Console'un hatalari nazikçe ele alma yöntemidir—kullanıcı hala geribildirim alacak şekilde, çevreniz için doğru olan daha basit bir dönme işareti otomatik olarak secilir.

Bunun Konsol Uygulamalarini Kullanıcı için Neden Daha Kolay Hale Getirdiği (3:07)

3:07'de Tim, bu özelliğin neden önemli olduğunu açıklamak için bir ara verir. Uygulamaniz dosyalari oluşturuyorsa veya indiriyorsa, verileri işliyorsa veya zaman alan herhangi bir iş yapıyorsa, bir spinner ile durum mesajı 'kullaniciya bir şeyler olup bittiğini bildirir.' Olmadan, bos bir konsol donmus gibi gorunebilir.

Tim, görev bittiğinde durumun kaybolduğunu ve yalnızca sonuç bilgisinin kaldığını vurgular. Bu, konsol uygulamanızın hem temiz hem de bilgilendirici olmasına aynı anda yardımcı olur.

Async Calisma icin Await AnsiConsole'a Geçme (3:24)

Bu noktaya kadar Tim Start() kullandi. Ama gerçek uygulamalarda, operasyonlari bekliyorsunuzdur. 3:34'te, suraya geçiyor:

await AnsiConsole.Status()
    .StartAsync("Yükleniyor...", async ctx =>
    {
        // asenkron calisma
    });

Bu küçük değişiklik—await AnsiConsole ve .StartAsync() kullanımı—durum bloğunun içinde asenkron kod çalıştırmanıza olanak tanır. Tim, 4:02'de bağlamın içinin UI güncellemeleri için iş parçacığı güvenli olmadığını söyler. Dönme işaretini veya durum metnini değiştirmek için her zaman "UI iş parçacığına geri dönün." Bunu gözetmek, başka bir iş parçacığından güncelleme yapmaya çalıştığınızda oluşan garip hatalardan kaçınmanızı sağlar.

Bir Dongu Icinde Veri Indirmek – Daha Gerçekçi Bir Demo (4:26)

Bir sonraki, Tim, gerçek dünya gorevine benzeyen bir döngü oluşturuyor: bir API'den 20 kursu indirmek. Kodu şu sekilde değiştirir:

for (int i = 1; i < 21; i++)
{
    ctx.Status($"Kurs {i} indiriliyor...");
    var jsonResponse = await Helpers.Fetch("https://sample.com/courses/{i}");
    AnsiConsole.MarkupLine($"[kırmızı]Kurs {i} indirildi[/]");
}

Burada üç önemli Spectre Console ozelligini bir arada gösterir:

  • Context.Status() döne işaretinin yaninda gösterilen durum dizisini dinamik olarak değiştirir.

  • await Helpers.Fetch(...) konsol uygulamanız icinde gerçek bir asenkron gorevi temsil eder.

  • AnsiConsole.MarkupLine() Spectre'nin işaretlemesini renk eklemek icin kullanır. Tim, "yapacak eğlenceli bir şey" olarak [kırmızı] secer.

Bu örnek, karmaşık kod olmadan bir projeye ilerleme geribildirimi eklemenin ne kadar kolay olduğunu gösterir.

Çalışan Uygulamayı Görüntüleme (7:21)

Tim yeni kodu çalıştırdığında yeşil dönme işaretini (temasındaki Estetik türü) ve durum metninin "Kurs 1 indiriliyor...", "Kurs 2 indiriliyor..." şeklinde değiştiğini görürsünüz. Her indirme işlemi bittiğinde kırmızı bir satır görünür: "Kurs 1 indirildi", "Kurs 2 indirildi".

Spectre Console Live Status Spinners 3 related to Çalışan Uygulamayı Görüntüleme (7:21)

Tim, bunun veri yükleme veya dosya işleme gibi görevleri takip etmenin harika bir yolu olduğunu belirtiyor. "Sonuç mesajlarını bırakıyorsunuz, ancak artık indirme bekleme mesajınız yok," diye 7:27'de açıklıyor.

Spectre Console Live Status Spinners 4 related to Çalışan Uygulamayı Görüntüleme (7:21)

Eşzamanlı vs. Asenkron – Performans Farkı Yok (8:00)

8:00'da Tim performansa değiniyor. Start() yerine StartAsync() kullanmak, spinner animasyonunun hızını değiştirmez. Sadece kodunuzun içinin asenkron olup olmadığı önemlidir. Eğer await kullanıyorsanız, .StartAsync()'ye ihtiyaçınız var; aksi takdirde, .Start() yeterlidir.

Bu, konsol uygulamanıza durum geri bildirimi ekleyebileceğiniz anlamına gelir, yavaşlamasından endişe etmeden. Bu, zaten yapmakta olduğunuz işi sarar.

Yerleşik ve Özel Spinnerlar – Kontrol Edilecek Uzun Bir Liste (8:45)

Kapanış yaparken, Tim, Spectre Console'un çok sayıda yerleşik spinner sunduğunu vurguluyor. Listede gezinebilir ve beğendiğiniz biri seçebilirsiniz—noktalardan ok işaretlerine, "estetik"e kadar her şey. Daha sonra Tim, uygulamanızın marka veya renkleriyle tam uyum sağlayabilmeniz için özel bir spinner oluşturmayı gösterecek.

Bu esneklik, Spectre Console'u güzel konsol uygulamaları oluşturmak için harika bir araç haline getiren şeyin bir parçasıdır. Size ilerleme geri bildirimi, hızlı çıktılar ve dinamik görseller sunar, tekerleği yeniden icat etmeden.

Sonuç – Spectre Console Durumu Eylemde (9:07)

Tim Corey'nin videosunu izleyerek, bir .NET konsol uygulamasını geliştirmek için Spectre Console Durumu nasıl kullanacağınızı gördük:

  • AnsiConsole.Status().Start() veya await AnsiConsole.Status().StartAsync() kullanarak bir görev çalışırken bir spinner ve durum metni gösterin.

  • Döngünüz içinde context.Status()'u dinamik olarak güncelleyin.

  • AnsiConsole.MarkupLine() ve Spectre markup kullanarak kırmızı, yeşil veya diğer renklerle sonuçları çıktısını alın.

  • Yerleşik spinner listesinden birini seçin veya daha sonra kendi spinnerınızı oluşturun.

  • Konsol çıktısını sade tutarken kullanıcılara net bilgi sağlayın.

Bu küçük dokunuşlar, sıradan bir konsol projesini güzel bir konsol uygulamasına dönüştürebilir. Spectre Console'un durum özelliği, ilerlemeyi paylaşmayı, sonuçları kontrol etmeyi ve uygulamanızın istemini daha dost canlısı ve etkileşimli hale getirmeyi daha basit hale getirir.

Hero Worlddot related to Canlı Durum Mesajları ve Döngüler - Spectre Console Serisi
Hero Affiliate related to Canlı Durum Mesajları ve Döngüler - Spectre Console Serisi

Sevdiğiniz Şeyleri Paylaşarak Daha Fazla Kazanın

.NET, C#, Java, Python veya Node.js üzerinde çalışan geliştiriciler için içerik oluşturuyor musunuz? Uzmanlığınızı ek gelire dönüştürün!

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara