Так что, по сути, у меня есть форма, которая загружает файл, называемый file.jpg, который вращается, например, каждый час или около того, и у меня есть кнопка, которая начинает загрузку, где она случайным образом загружает ее произвольное количество времени (в основном это самообучение) Мне нравится добавлять код в progressChange, где я хочу каким-то образом получить байты, полученные со временем, чтобы получить КБ / с. я погуглил и ничего не могу найти. мне не нужны какие-либо модные сетевые стеки, так как они являются стандартными jpegs, поэтому он не слишком большой (фактически, к моменту загрузки файла, когда я очищаю индикатор выполнения, я никогда не видел его с самого начала ... но я отвлекся) Я хотел бы видеть среднее значение КБ / с, даже если я вижу его в течение 2 секунд (файлы примерно 1 мегабайт каждый говорят). Любая помощь очень ценится.
private void btnStart_Click(object sender, EventArgs e)
{
btnStart.Enabled = false;
btnStop.Enabled = true;
WebClient webclient = new WebClient();
webclient.DownloadFileCompleted += new AsyncCompletedEventHandler(Completed);
webclient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(ProgressChanged);
// you need to increment the number !!!
// add the file to the list.
// single click should preview
// progress bar should clear after it downloads
// the status bar as well should be done
int num = nextIndex() + 1;
string file = @"C:\IMG\IMG_";
file += string.Format("{0:d5}", num);
file += ".jpg";
webclient.DownloadFileAsync(new Uri("http://www.foobar.com/file.jpg"), file);
lstFiles.Enabled = false;
}
private void ProgressChanged(object sender, DownloadProgressChangedEventArgs e)
{
// display kb/sec as well??
pbDownload.Value = e.ProgressPercentage;
}