private void OnStartingWork(WorkerThread <Runner.IRunnerData> worker, Runner.IRunnerData task) { if (task is null) { return; } lock (m_lock) { if (m_updateTasks.TryGetValue(task, out Tuple <ISchedule, DateTime, DateTime> scheduleInfo)) { // Item2 is the scheduled start time (Time in the Schedule table). // Item3 is the actual start time (LastRun in the Schedule table). m_updateTasks[task] = Tuple.Create(scheduleInfo.Item1, scheduleInfo.Item2, DateTime.UtcNow); } } }
private void OnCompleted(WorkerThread <Runner.IRunnerData> worker, Runner.IRunnerData task) { Tuple <ISchedule, DateTime, DateTime> t = null; lock (m_lock) { if (task != null && m_updateTasks.TryGetValue(task, out t)) { m_updateTasks.Remove(task); } } if (t != null) { t.Item1.Time = t.Item2; t.Item1.LastRun = t.Item3; Program.DataConnection.AddOrUpdateSchedule(t.Item1); } }