[C#] Jak dodać kod aby progressbar pokazywał aktualny stan pobierania?

Witam próbuję zrobić programik w C#[konsolowy] aby pobierał pliki synchronicznie jak i asynchronicznie i w każdym przypadku pokazywał progressbar dla aktualnego pliku w obu przypadkach ale nie wiem do końca jak zrobić aby to łapało postęp pliku a nie automatem zliczało od 0-100% i przechodziło dalej :frowning:

Cel kodu:
Włączyć program, który ściągnie pliki synchronicznie i asynchronicznie pokazując w obu przypadkach pasek postępu pobierania.

KOD:
Program.cs
https://pastebin.com/hWn9HNLP

ProgressBar.cs
https://pastebin.com/rTaJqHpr

Próbuję tym kawałkiem to zrobić:
using System;
using System.Threading;

static class Program {

static void Main() {
	Console.Write("Performing some task... ");
	using (var progress = new ProgressBar()) {
		for (int i = 0; i <= 100; i++) {
			progress.Report((double) i / 100);
			Thread.Sleep(20);
		}
	}
	Console.WriteLine("Done.");
}

}

ale myślę, że to właśnie tu jest błąd.

Zobacz https://msdn.microsoft.com/pl-pl/library/system.net.webclient.downloadprogresschanged(v=vs.110).aspx