본문 바로가기

테크크런치기사

세련된 ASCII 진행 막대

출처 : https://www.hanselman.com/blog/Accelerated3DVRSureButImpressMeWithANiceASCIIProgressBarOrSpinner.aspx


1080p 60fps 그래픽 가속 설정을 사용해 주셔서 감사합니다.하지만 저는 오래된 학교입니다. 정말 세련된 ASCII 진행 막대 또는 회 전자로 감탄하십시오!

이번 주에 멋진 .NET 코어 준비 진행률 표시 줄에 대한 두 가지 팁을 받았습니다. 그래서 나는 그것들을 사용해 보았습니다.

MARTIJN LAARMAN의 SHELLPROGRESSBAR

이건 정말 멋집니다. 병렬로 발생하는 비동기 작업을위한 하위 진행 막대도 지원합니다. 사용하기가 매우 쉽습니다. 몇 분 안에 멋진 진행 바를 얻을 수있었습니다.

static void Main(string[] args)
{
    const int totalTicks = 100;
    var options = new ProgressBarOptions
    {
        ForegroundColor = ConsoleColor.Yellow,
        ForegroundColorDone = ConsoleColor.DarkGreen,
        BackgroundColor = ConsoleColor.DarkGray,
        BackgroundCharacter = '\u2593'
    };
    using (var pbar = new ProgressBar(totalTicks, "Initial message", options))
    {
            pbar.Tick(); //will advance pbar to 1 out of 10.
            //we can also advance and update the progressbar text
            pbar.Tick("Step 2 of 10");
            TickToCompletion(pbar, totalTicks, sleep: 50);
    }
}

팔.

.NET 코어의 멋진 ASCII 진행 막대

ShellProgressBar 의 예제 , 특히 ExampleBase.cs 에서 TickToCompletion ()과 같은 도우미가있는 곳 을 먼저 확인하십시오.이 곳에서는 처음에는 명확하지 않습니다.

KURUKURU에 의한 사와 타리 마유키

.NET 코어를위한 활발한 개발중인 멋진 진행 시스템 (수퍼 액티브 ... 한 시간 전에 코드를 업데이트 한 것을 볼 수 있습니다!)을 Kurukuru라고합니다. 이 코드는 진행 막대와 스피너에 대한 정보가 적습니다. 유니 코드 인식 콘솔에서 사용할 수있는 멋진 문자가 많기 때문에 유니 코드와 비 유니 코드는 현명합니다.

.NET Core의 멋진 ASCII Spinner!

Kurukuru는 사용하기 쉽고 코드에 통합하기 쉽습니다. 또한 "일회용"패턴을 영리하게 사용합니다. 작업을 마무리하고 예외가 발생하면 실패한 회 전자가 표시됩니다.

Spinner.Start("Processing...", () =>
{
    Thread.Sleep(1000 * 3);
     
    // MEMO: If you want to show as failed, throw a exception here.
    // throw new Exception("Something went wrong!");
});
 
Spinner.Start("Stage 1...", spinner =>
{
    Thread.Sleep(1000 * 3);
    spinner.Text = "Stage 2...";
    Thread.Sleep(1000 * 3);
    spinner.Fail("Something went wrong!");
});

팁 : .NET 코어 콘솔 앱이 비동기 메인 (예 : 내가했던 것처럼)을 사용하고 Kurukuru의 비동기 메소드를 호출하려는 경우 프로젝트의 * .csproj에 추가하여 최신 C # 7.1 기능을 사용하고자 함을 나타낼 수 있습니다 파일:

<PropertyGroup>
    <LangVersion>latest</LangVersion>
</PropertyGroup>

이렇게하면 다음 작업을 수행 할 수있었습니다.

public static async Task Main(string[] args)
{
    Console.WriteLine("Hello World!");
    await Spinner.StartAsync("Stage 1...", async spinner =>
    {
        await Task.Delay(1000 * 3);
        spinner.Text = "Stage 2...";
        await Task.Delay(1000 * 3);
        spinner.Fail("Something went wrong!");
    });
}

나는 몇몇을 놓쳤는가? 내가 한 것 같아. 좋은 ASCII 진행 막대와 회 전자가 당신을 행복하게합니까?

그리고 다시, 모든 오픈 소스와 마찬가지로, 나는 당신이 도와 주실 것을 권합니다! 나는 저자가 그것을 고맙게 여기는 것을 안다.