В настоящее время я создаю средство копирования файлов, которое работает на консоли.В нем существует 3 базовых класса, первый - это сама программа, которая берет источник и назначение и выглядит следующим образом:
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Source:");
string path = Console.ReadLine();
Console.WriteLine("target:");
string target = Console.ReadLine();
Copy newCopy = new Copy();
newCopy.CopyFunction(path, target);
Console.ReadLine();
}
}
Второй класс - это Copy.CS, который выглядит следующим образом:
class Copy
{
public void CopyFunction(string source, string destination)
{
string sourceFile = source;
string destinationFile = destination;
File.Copy(sourceFile, destinationFile);
Console.Write("Files are being copied... ");
using (var progress = new ProgressBar())
{
for (int i = 0; i <= 100; i++)
{
progress.Report((double)i / 100);
Thread.Sleep(20);
}
}
Console.WriteLine("File Copied");
}
}
В последнем классе я реализовал класс ProgressBar.cs, предоставленный @ DanielWolf
https://gist.github.com/DanielSWolf/0ab6a96899cc5377bf54
Проблема, с которой я сейчас сталкиваюсь, заключается в том, чтоФункция копирования файлов работает, как и индикатор выполнения, но они работают отдельно.Например, консоль будет проводить некоторое время на пустом экране, пока обрабатывает происходящее, а затем, после ее завершения, отображается быстрая анимация индикатора выполнения.
Мне было интересно, смогу ли я синхронизировать прогрессполоса с процессом копирования, чтобы он двигался с той же скоростью, пока он происходит?