@@ -21,6 +21,9 @@ public partial class frmHistory : Form
21
21
private long pendingCount = 0 ;
22
22
private long successCount = 0 ;
23
23
24
+ private long speed = 0 ;
25
+ private long orgDoneSize = 0 ;
26
+
24
27
private object locker = new object ( ) ;
25
28
26
29
public frmHistory ( DUWorker worker )
@@ -219,16 +222,33 @@ private void worker_OnCompleted(object sender, DUWorkerEventArgs e)
219
222
item . SubItems [ 2 ] . Text = GetSizeText ( e . op ) ;
220
223
}
221
224
}
225
+
226
+ //重置速度计算
227
+ lock ( locker )
228
+ {
229
+ speed = 0 ;
230
+ orgDoneSize = 0 ;
231
+ }
222
232
}
223
233
224
234
private void worker_OnProgress ( object sender , DUWorkerEventArgs e )
225
235
{
226
- if ( e . op . status == OperationStatus . Processing )
236
+ if ( e . op . status == OperationStatus . Processing )
227
237
{
228
238
lock ( locker )
229
239
{
230
240
if ( ! updatedOp . Contains ( e . op ) )
231
241
updatedOp . Add ( e . op , e . op ) ;
242
+ if ( orgDoneSize == 0 || e . op . doneSize < orgDoneSize )
243
+ {
244
+ orgDoneSize = e . op . doneSize ;
245
+ speed = 0 ;
246
+ }
247
+ else
248
+ {
249
+ speed += e . op . doneSize - orgDoneSize ;
250
+ orgDoneSize = e . op . doneSize ;
251
+ }
232
252
}
233
253
}
234
254
}
@@ -355,7 +375,8 @@ private void timer1_Tick(object sender, EventArgs e)
355
375
{
356
376
if ( lvItems . InvokeRequired )
357
377
{
358
- lvItems . Invoke ( new AnonymousFunction ( delegate ( ) {
378
+ lvItems . Invoke ( new AnonymousFunction ( delegate ( )
379
+ {
359
380
lvItems . BeginUpdate ( ) ;
360
381
foreach ( OperationInfo op in updatedOp . Keys )
361
382
{
@@ -377,24 +398,37 @@ private void timer1_Tick(object sender, EventArgs e)
377
398
}
378
399
}
379
400
}
401
+ if ( btnPause . Enabled )
402
+ {
403
+ lock ( locker )
404
+ {
405
+ string speedstr = Utils . HumanReadableSize ( speed ) + "/s" ;
406
+ lblSpeed . Text = speedstr ;
407
+ //重置速度计算
408
+ speed = 0 ;
409
+ }
410
+ }
411
+ else
412
+ {
413
+ lblSpeed . Text = string . Empty ;
414
+ }
380
415
}
381
416
catch { }
382
-
383
417
}
384
418
385
419
private void RefreshControls ( )
386
420
{
387
421
btnPlay . Enabled = worker . IsPause ;
388
422
btnPause . Enabled = ! btnPlay . Enabled ;
389
423
btnClean . Enabled = lvItems . Items . Count > 0 ;
390
- lblStatus . Text = btnPause . Enabled ? "The download/upload worker running..."
391
- : "The download/upload worker stopped. Set auto start up on settings window." ;
424
+ lblStatus . Text = btnPause . Enabled ? "Running..." : "Stopped" ;
392
425
RefreshST ( ) ;
393
426
}
394
427
395
428
private void RefreshST ( )
396
429
{
397
- lblStatusST . Text = lvItems . Items . Count . ToString ( ) + " items, "
430
+ lblStatusST . Text = lvItems . Items . Count . ToString ( ) + " items, " + Interlocked . Read ( ref successCount ) . ToString ( ) + " succeed" ;
431
+ lblStatusST . ToolTipText = lvItems . Items . Count . ToString ( ) + " items, "
398
432
+ Interlocked . Read ( ref pendingCount ) . ToString ( ) + " pending, "
399
433
+ Interlocked . Read ( ref successCount ) . ToString ( ) + " succeed, "
400
434
+ Interlocked . Read ( ref failedCount ) . ToString ( ) + " failed, "
0 commit comments