aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandler.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandler.cs')
-rw-r--r--Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandler.cs28
1 files changed, 28 insertions, 0 deletions
diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandler.cs b/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandler.cs
index 48fb35c0f..a748a63cc 100644
--- a/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandler.cs
+++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/FileSystem/FileSystemHandler.cs
@@ -12,6 +12,8 @@ namespace Tango.FSE.Common.FileSystem
{
private Action _abortAction;
private FileSystemHandlerStatus _statusBeforePause;
+ private System.Timers.Timer _transferRateTimer;
+ private double _lastPosition;
public FileSystemHandlerType Type { get; set; }
@@ -65,6 +67,13 @@ namespace Tango.FSE.Common.FileSystem
set { _length = value; RaisePropertyChangedAuto(); }
}
+ private long _transferRate;
+ public long TransferRate
+ {
+ get { return _transferRate; }
+ set { _transferRate = value; RaisePropertyChangedAuto(); }
+ }
+
private Exception _failedException;
public Exception FailedException
{
@@ -83,8 +92,27 @@ namespace Tango.FSE.Common.FileSystem
_abortAction = abortAction;
}
+ private void _transferRateTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
+ {
+ if (Status == FileSystemHandlerStatus.Aborted || Status == FileSystemHandlerStatus.Completed || Status == FileSystemHandlerStatus.Failed)
+ {
+ _transferRateTimer.Dispose();
+ return;
+ }
+
+ TransferRate = (long)(Position - _lastPosition);
+ _lastPosition = Position;
+ }
+
internal void InvalidateProgress(double position, double length)
{
+ if (_transferRateTimer == null)
+ {
+ _transferRateTimer = new System.Timers.Timer(1000);
+ _transferRateTimer.Elapsed += _transferRateTimer_Elapsed;
+ _transferRateTimer.Start();
+ }
+
Position = position;
Length = length;