private void UpdateOutput()
{
double value1;
double value2;
double value3;
long valueTicks;
lock (lockObject)
{
value1 = SweeperTables.DataValues1[SweeperTables.GetScaledIndex(this.index1, this.positions + 1)];
value2 = SweeperTables.DataValues2[SweeperTables.GetScaledIndex(this.index2, this.positions + 1)];
value3 = SweeperTables.DataValues3[SweeperTables.GetScaledIndex(this.index3, this.positions + 1)];
valueTicks = this.ticks;
}
if (Monitor.TryEnter(lockJobs))
{
try
{
foreach (var job in jobs)
job(
zeroToOne: value1,
negativeOneToOne: value2,
zeroToOneToZero: value3,
forced: false,
totalTicks: valueTicks,
final: this.ended);
}
catch (Exception ex)
{
log.Error("Exception in Sweeper job" + ex.ToString());
}
finally
{
Monitor.Exit(lockJobs);
}
}
else
log.Warn("Missed execute task in Sweeper job");
}