Скорость загрузки секундомера рассчитывается с другими форматами скорости - PullRequest
0 голосов
/ 09 декабря 2018

Я загружаю один файл с классом WebClient.DownloadFile (address, fileName).

И вычисляю скорость загрузки с помощью секундомера.

Мой код расчета скорости;

Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
labelSpeed.Text = string.Format("{0} kB/s", (e.BytesReceived / 1024 / stopWatch.Elapsed.TotalSeconds).ToString("0.00"));

Я хочу показать скорость загрузки в форматах "b / s, kb / s, mb / s, gb / s и т.д ...",но мой код предоставляет только формат "КБ / с".Как показать другие форматы?

Ответы [ 2 ]

0 голосов
/ 09 декабря 2018

Вы можете использовать Enum, чтобы избежать клонирования кода для дисплея.Вот пример:

enum ByteMassFactor { B = 1, KB = 1024, MB = 1024 * 1024, GB = 1024 * 1024 * 1024 }

void Main()
{
    var byteCount = 2048;

    foreach (var mass in Enum.GetValues(typeof(ByteMassFactor)).Cast<ByteMassFactor>().Reverse())
        if (byteCount / (int)mass >= 1)
        {
            Console.WriteLine($"{byteCount / (int)mass} {mass}");
            break;
        }
}

Вывод:

2 KB
0 голосов
/ 09 декабря 2018

Хорошо, сейчас я решил свою проблему, просто используя этот способ;

Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();

string downloadSpeed;

downloadSpeed = string.Format("{0} B/s", (e.BytesReceived / stopWatch.Elapsed.TotalSeconds).ToString("0.00"));
if ((e.BytesReceived / stopWatch.Elapsed.TotalSeconds) > 1024)
{ downloadSpeed = string.Format("{0} KB/s", (e.BytesReceived / 1024 / stopWatch.Elapsed.TotalSeconds).ToString("0.00")); }
if ((e.BytesReceived / 1024 / stopWatch.Elapsed.TotalSeconds) > 1024)
{ downloadSpeed = string.Format("{0} MB/s", (e.BytesReceived / 1024 / 1024 / stopWatch.Elapsed.TotalSeconds).ToString("0.00")); }
if ((e.BytesReceived / 1024 / 1024 / stopWatch.Elapsed.TotalSeconds) > 1024)
{ downloadSpeed = string.Format("{0} GB/s", (e.BytesReceived / 1024 / 1024 / 1024 / stopWatch.Elapsed.TotalSeconds).ToString("0.00")); }

labelSpeed.Text = downloadSpeed;
...