Полагаю, вы хотите кб / с. Это определяется путем взятия kbreceived
и деления его на текущие секунды минус начальные секунды. Я не уверен, как сделать DateTime для этого в C #, но в VC ++ это было бы так:
COleDateTimeSpan dlElapsed = COleDateTime::GetCurrentTime()
- dlStart;
secs = dlElapsed.GetTotalSeconds();
Затем вы делите:
double kbsec = kbreceived / secs;
Чтобы получить kbreceived
, вам нужно прочитать currentBytes
, добавить уже прочитанные байты, а затем разделить на 1024.
Итак,
// chunk size 512.. could be higher up to you
while (int bytesread = file->Read(charBuf, 512))
{
currentbytes = currentbytes + bytesread;
// Set progress position by setting pos to currentbytes
}
int percent = currentbytes * 100 / x ( our file size integer
from above);
int kbreceived = currentbytes / 1024;
За исключением некоторых специфических для реализации функций, базовая концепция одинакова независимо от языка.