Mpdreamz / shellprogressbar

ShellProgressBar - display progress in your console application

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Progress not staying on one line

joshcomley opened this issue · comments

Edit: I'm using .NET 5.

If I have this code (from examples just with an async delay):

public class Program
{
    public static async Task Main(string[] args)
    {
        const int totalTicks = 10;
        var options = new ProgressBarOptions
        {
            ProgressCharacter = '─',
            ProgressBarOnBottom = true
        };
        using (var pbar = new ProgressBar(totalTicks, "Initial message", options))
        {
            for (var i = 0; i < totalTicks; i++)
            {
                pbar.Tick(); //will advance pbar to 1 out of 10.
                await Task.Delay(1000);
            }
        }
    }
}

Then my output looks like this:

image

If I run it non-async with Thread.Sleep(x) as follows:

public class Program
{
    public static void Main(string[] args)
    {
        const int totalTicks = 10;
        var options = new ProgressBarOptions
        {
            ProgressCharacter = '─',
            ProgressBarOnBottom = true
        };
        var pbar = new ProgressBar(totalTicks, "Initial message", options);
        for (var i = 0; i < totalTicks; i++)
        {
            pbar.Tick(); //will advance pbar to 1 out of 10.
            Thread.Sleep(1000);
        }
    }
}

My output looks like this:

image

What am I doing wrong? My understanding is it should appear on one line and continuously update that line.

Many thanks!

I also noticed that the ProgressBar would slowly clear the lines above it and replace the line as well