ShellProgressBar 5.2.0
dotnet add package ShellProgressBar --version 5.2.0
NuGet\Install-Package ShellProgressBar -Version 5.2.0
<PackageReference Include="ShellProgressBar" Version="5.2.0" />
paket add ShellProgressBar --version 5.2.0
#r "nuget: ShellProgressBar, 5.2.0"
// Install ShellProgressBar as a Cake Addin #addin nuget:?package=ShellProgressBar&version=5.2.0 // Install ShellProgressBar as a Cake Tool #tool nuget:?package=ShellProgressBar&version=5.2.0
ShellProgressBar
在控制台应用程序中可视化(并发)进度
这是一个很好的小库,可以可视化长时间运行的命令行任务。
.NET Core 兼容!
它还支持启动子进度条,这允许您非常不错地可视化依赖关系和并发。
已在 OSX 上进行测试
和 Windows 上
(PowerShell 也可以,请参阅下面的示例)
安装
在 NuGet 上获取它: https://nuget.net.cn/packages/ShellProgressBar/
使用方法
使用方法非常简单
const int totalTicks = 10;
var options = new ProgressBarOptions
{
ProgressCharacter = '─',
ProgressBarOnBottom = true
};
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");
}
报告进度
有两种方法可以报告进度。您可以使用上面描述的 Tick()
函数。或者,您可以通过调用进度条对象的 AsProgress<T>()
以获得 IProgress<T>
实例来报告进度。
对于进度类型是介于 0.0 和 1.0 之间的 float
值的简单情况,表示完成百分比,请使用 progressBar.AsProgress<float>()
using ProgressBar progressBar = new ProgressBar(10000, "My Progress Message");
IProgress progress = progressBar.AsProgress<float>();
progress.Report(0.25); // Advances the progress bar to 25%
请在 src/ShellProgressBar.Example/Examples 目录中的 IntegrationWithIProgressExample.cs
和 IntegrationWithIProgressPercentageExample.cs
中查看完整示例。
选项
进度条位置
const int totalTicks = 10;
var options = new ProgressBarOptions
{
ProgressCharacter = '─',
ProgressBarOnBottom = true
};
using (var pbar = new ProgressBar(totalTicks, "progress bar is on the bottom now", options))
{
TickToCompletion(pbar, totalTicks, sleep: 500);
}
默认情况下,进度条位于顶部,消息位于底部。如果需要,可以将其翻转。
样式更改
const int totalTicks = 10;
var options = new ProgressBarOptions
{
ForegroundColor = ConsoleColor.Yellow,
ForegroundColorDone = ConsoleColor.DarkGreen,
BackgroundColor = ConsoleColor.DarkGray,
BackgroundCharacter = '\u2593'
};
using (var pbar = new ProgressBar(totalTicks, "showing off styling", options))
{
TickToCompletion(pbar, totalTicks, sleep: 500);
}
可以样式化的方面很多,包括前景色、背景(非活动部分)以及完成时的颜色变化。
无实时更新
默认情况下,计时器每500毫秒绘制屏幕一次。您可以将进度条配置为仅在调用.Tick()
时绘制。
const int totalTicks = 5;
var options = new ProgressBarOptions
{
DisplayTimeInRealTime = false
};
using (var pbar = new ProgressBar(totalTicks, "only draw progress on tick", options))
{
TickToCompletion(pbar, totalTicks, sleep:1750);
}
如果您查看经过的时间,您会看到它跳过了02:00
。
后代进度条
进度条可以产生子进度条,每个子进度条都可以产生自己的进度条。每个子进度条都有自己的样式选项。
这对于可视化并发运行的任务来说非常出色。
const int totalTicks = 10;
var options = new ProgressBarOptions
{
ForegroundColor = ConsoleColor.Yellow,
BackgroundColor = ConsoleColor.DarkYellow,
ProgressCharacter = '─'
};
var childOptions = new ProgressBarOptions
{
ForegroundColor = ConsoleColor.Green,
BackgroundColor = ConsoleColor.DarkGreen,
ProgressCharacter = '─'
};
using (var pbar = new ProgressBar(totalTicks, "main progressbar", options))
{
TickToCompletion(pbar, totalTicks, sleep: 10, childAction: () =>
{
using (var child = pbar.Spawn(totalTicks, "child actions", childOptions))
{
TickToCompletion(child, totalTicks, sleep: 100);
}
});
}
默认情况下,子进度条完成时会折叠,为新的/并行的进度条腾出空间。
您可以指定CollapseWhenFinished = false
来保留它们。
var childOptions = new ProgressBarOptions
{
ForegroundColor = ConsoleColor.Green,
BackgroundColor = ConsoleColor.DarkGreen,
ProgressCharacter = '─',
CollapseWhenFinished = false
};
FixedDurationBar
ProgressBar
非常适合可视化未知运行时间的任务。如果您有一个您知道需要固定时间量的任务,还有一个名为FixedDurationBar
的子类。FixedDurationBar
将自动调用Tick()
,但除此之外,所有选项和用法都是相同的。但除了它依赖于实时更新功能,禁用该功能将引发错误。
FixedDurationBar
公开了一个IsCompleted
和CompletedHandle
。
致谢
初始实现受到了这篇文章的启发。[链接](http://www.bytechaser.com/en/articles/ckcwh8nsyt/display-progress-bar-in-console-application-in-c.aspx)
显然,任何向此存储库发送PR的人 😍
产品 | 版本 兼容和额外的计算目标框架版本。 |
---|---|
.NET | net5.0 已计算。 net5.0-windows 已计算。 net6.0 已计算。 net6.0-android 已计算。 net6.0-ios 已计算。 net6.0-maccatalyst 已计算。 net6.0-macos 已计算。 net6.0-tvos 已计算。 net6.0-windows 已计算。 net7.0 已计算。 net7.0-android 已计算。 net7.0-ios 已计算。 net7.0-maccatalyst 已计算。 net7.0-macos 已计算。 net7.0-tvos 已计算。 net7.0-windows 已计算。 net8.0 已计算。 net8.0-android 已计算。 net8.0-browser 已计算。 net8.0-ios 已计算。 net8.0-maccatalyst 已计算。 net8.0-macos 已计算。 net8.0-tvos 已计算。 net8.0-windows 已计算。 |
.NET Core | netcoreapp1.0 已计算。 netcoreapp1.1 已计算。 netcoreapp2.0 已计算。 netcoreapp2.1 已计算。 netcoreapp2.2 已计算。 netcoreapp3.0 已计算。 netcoreapp3.1 已计算。 |
.NET 标准化 | netstandard1.3 兼容。 netstandard1.4 已计算。 netstandard1.5 已计算。 netstandard1.6 已计算。 netstandard2.0 兼容。 netstandard2.1 已计算。 |
.NET 框架 | net46 已计算。 net461 兼容。 net462 已计算。 net463 已计算。 net47 已计算。 net471 已计算。 net472 已计算。 net48 已计算。 net481 已计算。 |
MonoAndroid | monoandroid 已计算。 |
MonoMac | monomac 已计算。 |
MonoTouch | monotouch 已计算。 |
Tizen | tizen30 已计算。 tizen40 已计算。 tizen60 已计算。 |
通用Windows平台 | uap 已计算。 uap10.0 已计算。 |
Xamarin.iOS | xamarinios 已计算。 |
Xamarin.Mac | xamarinmac 已计算。 |
Xamarin.TVOS | xamarintvos 已计算。 |
Xamarin.WatchOS | xamarinwatchos 已计算。 |
-
.NET Framework 4.6.1
- System.Runtime.InteropServices.RuntimeInformation (>= 4.3.0)
- System.Text.Encoding.CodePages (>= 4.0.1)
-
.NET Standard 1.3
- NETStandard.Library (>= 1.6.1)
- System.Runtime.InteropServices.RuntimeInformation (>= 4.3.0)
- System.Text.Encoding.CodePages (>= 4.0.1)
-
.NET Standard 2.0
- System.Runtime.InteropServices.RuntimeInformation (>= 4.3.0)
- System.Text.Encoding.CodePages (>= 4.0.1)
NuGet 包 (13)
显示依赖于 ShellProgressBar 的前 5 个 NuGet 包
包 | 下载 |
---|---|
TIKSN-Framework
这是一个 .NET Framework 增强框架。主要功能包括版本控制、金融、货币、外汇、货币定价策略、遥测、组合加权进度、仓储以及使用 Entity Framework Core、网络连接服务触发的实现,工作设置、Windows 记录配置源、Azure 存储库、MongoDB 仓储、NoDB 仓储、语言和区域本地化、序列化、Rest 请求器、Rest 仓储、依赖注入、Composition Root 设置的基类。 |
|
Microsoft.CST.ApplicationInspector.Commands Microsoft Application Inspector 是一个软件源代码分析工具,有助于快速识别和理解源代码中的已知特性和其他有趣特征,从而确定软件是什么或做什么。 |
|
stryker 此库包含所有stryker突变测试逻辑。此包不包含运行器。如果您想扩展stryker以使用自己的运行器,请使用此包。 |
|
Chiron.Cli.Lab
Chiron CLI组件。 |
|
Catalyst.Tools.Importer
包描述 |
GitHub存储库 (12)
显示依赖ShellProgressBar的前5个最受欢迎的GitHub存储库
存储库 | 星级 |
---|---|
microsoft / ApplicationInspector
一个用于快速突现感兴趣特性和其他特征的源代码分析器。使用基于json的规则引擎进行静态分析以回答“代码中有什么?”问题。适用于在使用之前扫描组件或检测特征级别变更。
|
|
stryker-mutator / stryker-net
为.NET核心和.NET框架提供突变测试!
|
|
bezzad / Downloader
.NET应用程序的快速、跨平台且可靠的分块下载器,具有异步进度事件。
|
|
takuya-takeuchi / FaceRecognitionDotNet
适用于Windows、MacOS和Linux的.NET上最简单的面部识别api
|
|
Reloaded-Project / Reloaded-II
为任何原生游戏X86、X64提供通用.NET Core驱动修改框架。
|