
เป้าหมายของโครงการนี้คือการขยาย spectre.console ปลั๊กอินด้วยฟังก์ชั่นเฉพาะบางอย่าง
IProgressHttpClientDataTable| บรรจุุภัณฑ์ | รุ่น | คำอธิบาย |
|---|---|---|
Spectre.Console.Extensions.Progress | อะแดปเตอร์ iProgress และการรายงาน HTTPClient | |
Spectre.Console.Extensions.Table | DataTable และชุดข้อมูลสนับสนุน |
ส่วนขยายสำหรับ AnsiConsole.Progress
ใช้สปินเนอร์ Spectre พร้อมอินเตอร์เฟส IProgress มาตรฐาน
แรงจูงใจ : การเสียบวิธีการที่ยอมรับ IProgress เพื่อให้การรายงานมีการเปิดเผยคุ้นเคยและสะดวกสบาย
private static async Task RunSimpleExampleAsync ( )
{
await BuildProgress ( ) . StartAsync (
GenerateProgressTasks ,
( reporter ) => RunSpinnerWithIProgress ( reporter , TimeSpan . FromMilliseconds ( 500 ) ) ,
( reporter ) => RunSpinnerWithIProgress ( reporter , TimeSpan . FromSeconds ( 1 ) ) ) ;
// Collection of tasks to execute,
// every task corresponds to following delegates sequentially.
static IEnumerable < ProgressTask > GenerateProgressTasks ( ProgressContext ctx )
{
yield return ctx . AddTask ( "Task1" ) ;
yield return ctx . AddTask ( "Task2" ) ;
}
static async Task RunSpinnerWithIProgress (
IProgress < double > reporter ,
TimeSpan delay )
{
var capacity = 100 ;
var step = 10 ;
while ( capacity > 0 )
{
reporter . Report ( step ) ;
capacity -= step ;
await Task . Delay ( delay ) ;
}
}
} เรียกใช้ความคืบหน้าสำหรับ HttpClient ที่กำหนดและ HttpRequestMessage ผลลัพธ์มีให้เป็น System.IO.Stream
แรงจูงใจ : มันเป็นงานทั่วไปในการดาวน์โหลดบางสิ่งและมีสปินเนอร์สำหรับสิ่งนั้น โดยพื้นฐานแล้วคุณไม่ต้องการที่จะกังวลกับการรายงานในกรณีนี้
var message = new HttpRequestMessage ( HttpMethod . Get , url ) ;
var http = new HttpClient ( ) ;
var description = "Downloading cats images" ;
await BuildProgress ( ) . StartAsync ( http , message , taskDescription : description , DownloadCallback ) ;
static async Task DownloadCallback ( Stream stream ) => { } ;
await BuildProgress ( )
. WithHttp ( http , request , description , DownloadCallback1 )
. WithHttp ( http , request , description , DownloadCallback2 )
. StartAsync ( ) ; แสดง System.Data.DataTable
System . Data . DataTable dataTable = DataTableFactory ( ) ;
var table = dataTable . FromDataTable ( ) . Border ( TableBorder . Rounded ) ;
AnsiConsole . Render ( ) ; หากต้องการดู Spectre.Console ในการดำเนินการติดตั้งเครื่องมือทั่วโลก Dotnet-Example
> dotnet tool restoreตอนนี้คุณสามารถแสดงรายการตัวอย่างที่มีอยู่ในที่เก็บนี้:
> dotnet exampleและเพื่อเรียกใช้ตัวอย่าง:
> dotnet example iprogressสำหรับรายละเอียดเพิ่มเติมโปรดดู:
.
| -- Samples
| | -- DataSet
| | -- DataTable
| | -- Directory.Build.props
| | -- http-progress
| | -- iprogress
| ` -- iprogress-http-client-multiple-calls
... ลิขสิทธิ์© Alexey Nikiforov
ให้ตามใบอนุญาต MIT สำหรับข้อมูลเพิ่มเติมดูที่ License.md