2010-11-22 3 views
0

Wie kann ich feststellen, wie lange ein:Wie kann man die Dauer ermitteln, die ein WebClient.DownloadData() benötigt, um den Vorgang abzuschließen?

objWebClient.DownloadData(strURL) 

in Anspruch nimmt?

ich wünsche es eine Eigenschaft war, die diese Informationen enthalten, aber ich konnte man nicht finden ...

+0

Versuchen Sie wirklich, nur die Zeit zum Herunterladen zu bekommen (in diesem Fall verwenden Sie die 2 Antworten unten) oder versuchen Sie, eine Fortschrittszeit zu erhalten (einschließlich xxx Minuten verbleibend). – Jamiec

Antwort

2

verwenden Sie einfach ein Stopwatch:

Stopwatch sw = Stopwatch.StartNew(); 
webClient.DownloadData(...); 
sw.Stop(); 
Console.WriteLine("Download took {0}ms", sw.ElapsedMilliseconds); 

Wenn Sie synchrone APIs verwenden, es ist wirklich einfach. Es ist mit asynchronen APIs schwieriger, aber Sie müssen nur die Stoppuhr in Ihrem Zustand weitergeben. Auch das ist ziemlich einfach, wenn Sie eine anonyme Methode oder einen Lambda-Ausdruck für Ihren Event-Handler verwenden, da er die lokale Variable erfassen kann.

2

Verwenden Sie die StopWatch Klasse - es vor dem Aufruf starten und nach dem Anruf beenden:

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

objWebClient.DownloadData(strURL) 

stopWatch.Stop(); 
TimeSpan ts = stopWatch.Elapsed; // ts now holds the duration