private Boolean sendProgressEvent(ProgressEventArgs pEArgs)
{
long ProgressSendLevel;
Boolean retValue = false;
try
{
if((m_EventTimer.currentMeasuring() > m_TimeSlice_ms) || pEArgs.ForceRefresh || pEArgs.NewLine || pEArgs.AddSeparator)
{
// time is reason
Progress.Raise(this, pEArgs);
if(pEArgs.TotalValue > 0)
ProgressSendLevel = ((100 * pEArgs.CurrentValue/pEArgs.TotalValue) / 10) * 10;
else
ProgressSendLevel = -1;
m_EventTimer.startMeasuring();
m_lastProgress = ProgressSendLevel;
Debug.Print("Progress (t):" + ProgressSendLevel.ToString());
}
else
{
// progress is reason
if(pEArgs.TotalValue > 0)
ProgressSendLevel = ((100 * pEArgs.CurrentValue/pEArgs.TotalValue) / 10) * 10;
else
ProgressSendLevel = -1;
if(((pEArgs.TotalValue != 0) && (((100 * pEArgs.CurrentValue/pEArgs.TotalValue) % m_PercentSlice) == 0) && (ProgressSendLevel != m_lastProgress)) ||
(ProgressSendLevel != m_lastProgress))
{
// time is reason
Progress.Raise(this, pEArgs);
m_EventTimer.startMeasuring();
m_lastProgress = ProgressSendLevel;
Debug.Print("Progress (l):" + ProgressSendLevel.ToString());
}
}
retValue = pEArgs.Cancelled ;
return retValue;
}
catch (Exception ex)
{
throw new Exception("Error while checking for progress event needed", ex);
}
}