Chcę kontrolować postęp pobierania pliku. Jako przykład weźmy kod ze strony: http://www.devtoolshed.com/content/c-download-file-progress-bar
while ((iByteSize = streamRemote.Read(byteBuffer, 0, byteBuffer.Length)) > 0)
{
streamLocal.Write(byteBuffer, 0, iByteSize);
iRunningByteTotal += iByteSize;
// calculate the progress out of a base "100"
double dIndex = (double)(iRunningByteTotal);
double dTotal = (double)byteBuffer.Length;
double dProgressPercentage = (dIndex / dTotal);
int iProgressPercentage = (int)(dProgressPercentage * 100);
backgroundWorker1.ReportProgress(iProgressPercentage);
}
W ostatniej linii nie będę zwiększał wartości paska postępu a wysyłał tą wartość przez sieć - załóżmy że będzie to metoda WebService'u. Pobieranie pliku nie powinno być przerywane ze względu na to, że coś trzeba gdzieś wywołać.
Jak teraz zrealizować pobieranie pliku z obsługą postępu pobierania bez przerywania pobierania? Oczywiście mogą być wątki, ale czas tworzenia wątku to też jest koszt. Myślałem o timerze, który np. co sekundę będzie sprawdzał czy zmieniła się wartość postępu i jeżeli się zmieniła to wtedy będzie reagował (oczywiście asynchronicznie). Co sądzicie o tym rozwiązaniu?