mirror of
https://github.com/nsnail/spectre.console.git
synced 2025-04-16 00:42:51 +08:00

* Adding a dark mode * Adding reference for types to summary pages * Adding API Reference * Adding modifiers to methods/fields/etc * Minimizing files input * Caching a lot of the output pages * Cache only for each execution * Adding API references to existing docs
1.7 KiB
1.7 KiB
Title: Live Display Order: 0 Description: "Spectre.Console can update arbitrary widgets in-place." Highlights: - Update tables or graphs with new updates. - Create a custom progress bar that extends the existing control. Reference: - T:Spectre.Console.LiveDisplay - M:Spectre.Console.AnsiConsole.Live(Spectre.Console.Rendering.IRenderable)
Spectre.Console can update arbitrary widgets in-place using the Live Display widget.
The live display is not thread safe, and using it together with other interactive components such as prompts, status displays or other progress displays are not supported.
var table = new Table().Centered();
AnsiConsole.Live(table)
.Start(ctx =>
{
table.AddColumn("Foo");
ctx.Refresh();
Thread.Sleep(1000);
table.AddColumn("Bar");
ctx.Refresh();
Thread.Sleep(1000);
});
Asynchronous progress
If you prefer to use async/await, you can use StartAsync
instead of Start
.
var table = new Table().Centered();
await AnsiConsole.Live(table)
.StartAsync(async ctx =>
{
table.AddColumn("Foo");
ctx.Refresh();
await Task.Delay(1000);
table.AddColumn("Bar");
ctx.Refresh();
await Task.Delay(1000);
});
Configure
var table = new Table().Centered();
AnsiConsole.Live(table)
.AutoClear(false) // Do not remove when done
.Overflow(VerticalOverflow.Ellipsis) // Show ellipsis when overflowing
.Cropping(VerticalOverflowCropping.Top) // Crop overflow at top
.Start(ctx =>
{
// Omitted
});