//Make sure we read only up to the block size\r
var size = buffer_size > remainder ? remainder : buffer_size;\r
\r
+ int timerTotal = 0;\r
+\r
watch.Start();\r
while(remainder>0 && 0<(read=await fileStream.ReadAsync(buffer, 0, (int)size).ConfigureAwait(false)))\r
{\r
total += read;\r
remainder -= read;\r
\r
- var speed = 1000 * read / (double)watch.ElapsedMilliseconds;\r
- var percentage = Convert.ToInt32(100*total/(double) _blockSize);\r
- _progress.Report(new UploadArgs(percentage, null, total, _blockSize, 0, 0,speed));\r
-\r
+ //Calculate the new size, \r
size = buffer_size > remainder ? remainder : buffer_size;\r
+\r
+ timerTotal += read;\r
+ //Only report every second\r
+ if (watch.ElapsedMilliseconds > 1000)\r
+ {\r
+\r
+ var speed = 1000*timerTotal/(double) watch.ElapsedMilliseconds;\r
+ var percentage = Convert.ToInt32(100*total/(double) _blockSize);\r
+ _progress.Report(new UploadArgs(percentage, null, total, _blockSize, 0, 0, speed));\r
+ //Reset the counter and total\r
+ timerTotal = 0;\r
+ watch.Reset();\r
+ }\r
\r
- watch.Restart();\r
+ watch.Start();\r
}\r
}\r
\r