private void ShowProgress( int position, int max, string progressMessage )
{
Dispatcher.Invoke( () =>
{
if ( position <= 1 )
{
_startProgressDateTime = DateTime.Now;
}
if ( max > 0 )
{
lblReportProgress.Content = progressMessage;
pgReportProgress.Maximum = max;
pgReportProgress.Value = position;
if ( pgReportProgress.Visibility != Visibility.Visible )
{
pgReportProgress.Visibility = Visibility.Visible;
}
// put the current statements/second in the tooltip
var duration = DateTime.Now - _startProgressDateTime;
if ( duration.TotalSeconds > 10 )
{
double rate = position / duration.TotalSeconds;
lblReportProgress.ToolTip = string.Format( "{1}/{2} @ {0:F2} per second", rate, position, max );
}
}
else
{
lblReportProgress.Content = progressMessage;
pgReportProgress.Visibility = Visibility.Collapsed;
}
} );
}