출처 : 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); }} |
팔.

ShellProgressBar 의 예제 , 특히 ExampleBase.cs 에서 TickToCompletion ()과 같은 도우미가있는 곳 을 먼저 확인하십시오.이 곳에서는 처음에는 명확하지 않습니다.
KURUKURU에 의한 사와 타리 마유키
.NET 코어를위한 활발한 개발중인 멋진 진행 시스템 (수퍼 액티브 ... 한 시간 전에 코드를 업데이트 한 것을 볼 수 있습니다!)을 Kurukuru라고합니다. 이 코드는 진행 막대와 스피너에 대한 정보가 적습니다. 유니 코드 인식 콘솔에서 사용할 수있는 멋진 문자가 많기 때문에 유니 코드와 비 유니 코드는 현명합니다.

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 진행 막대와 회 전자가 당신을 행복하게합니까?
그리고 다시, 모든 오픈 소스와 마찬가지로, 나는 당신이 도와 주실 것을 권합니다! 나는 저자가 그것을 고맙게 여기는 것을 안다.