Показать сообщение отдельно
Старый 29.06.2012, 16:50   #41
partizanes
Пользователь
 
Аватар для partizanes
 
Регистрация: 15.03.2010
Адрес: Беларусь,Витебск
Сообщений: 93
Сказал(а) спасибо: 97
Поблагодарили 36 раз(а) в 11 сообщениях
partizanes На верном пути
Отправить сообщение для partizanes с помощью ICQ Отправить сообщение для partizanes с помощью Skype™
По умолчанию

Подскажите как в данном примере получать brSize = e->BytesReceived; раз в секунду
весь пример попытка получить скорость скачивания;
Код:
_WebClient->DownloadFileCompleted += gcnew AsyncCompletedEventHandler(this, &Form1::_DownloadFileCompleted);
_WebClient->DownloadProgressChanged += gcnew System::Net::DownloadProgressChangedEventHandler(this, &Form1::_DownloadProgressChanged);
_WebClient->DownloadFileAsync(gcnew Uri(_URL), _SaveAs);

тут срабатывает постоянно поэтому значение brSize не раз в секунду как нам надо.
Код:
void Form1::_DownloadProgressChanged(System::Object ^sender, System::Net::DownloadProgressChangedEventArgs ^e)
{
    brSize = e->BytesReceived;
	brSizeLast = brSize - brSizeLast;
	Int64 tbtrSize = e->TotalBytesToReceive;
	Int64 ProgressPercentage = brSize * 100 / (tbtrSize);

	String^ drawString = Convert::ToString(ProgressPercentage) + "%"+Convert::ToString(diff);
	System::Drawing::Font^ drawFont = gcnew System::Drawing::Font( "Arial",8.25 );
	SolidBrush^ drawBrush = gcnew SolidBrush( Color::Black );
	PointF drawPoint = PointF(324/2 - 10, 23 / 2 - 7);

	progressBar1->Refresh();
	progressBar1->CreateGraphics()->DrawString( drawString, drawFont, drawBrush, drawPoint );
	progressBar1->Value = e->ProgressPercentage;
}
функция на таймере раз в 1сек срабатывает
Код:
void Form1::dSpeed(System::Object^  sender, System::EventArgs^  e)
{
	Int64 diff = (brSize-brSizeLast)/1024;
}
p.s переменные обьявлены глобально
Код:
Int64 brSizeLast = 0;
INT64 brSize = 0;
Int64 diff = 0;
вся функция откуда что вызывается
__________________
Когда-нибудь на оффе поставят Mangos...
partizanes вне форума   Ответить с цитированием