Hello so I want to use a timer and after x second I want to update DB one record. I use this code:
public IActionResult timerCallingWriteTest(string MachineId){ Id = MachineId; bool ResultBool = false; int hours ; aTimer = new System.Timers.Timer(10000); DateTime dateNow = DateTime.Now;
try { hours = Int32.Parse(dateNow.Hour.ToString()); } catch{ hours = 1; } if (hours >= 12 && hours >= 6 ){ aTimer.Elapsed += OnTimedEvent; aTimer.AutoReset = false; aTimer.Enabled = true; } return Json(new { ResultBool }); } public void OnTimedEvent(Object source, ElapsedEventArgs e ) > { var record = DB.CallingSystemMains.FirstOrDefault(o => o.Sate == 1 && o.MachineId == Id); > if (record != null) > { > record.Sate = 2; > record.EndTime = DateTime.Now; > DB.SaveChanges(); > } > else { > Console.WriteLine("////////////////// Chyba nezapsáno /////////////////////////"); > } > }
And my problem is with this :
> public void OnTimedEvent(Object source, ElapsedEventArgs e ) > { var record = DB.CallingSystemMains.FirstOrDefault(o => o.Sate == 1 && o.MachineId == Id); > if (record != null) > { > record.Sate = 2; > record.EndTime = DateTime.Now; > DB.SaveChanges(); > } > else { > Console.WriteLine("////////////////// Chyba nezapsáno /////////////////////////"); > } > }
The line with the record is without a run? And my code doesn't work :( What did I do badly? When I use this line
> var record = DB.CallingSystemMains.FirstOrDefault(o => o.Sate == 1 &&
> o.MachineId == Id);
in
timerCallingWriteTest(string MachineId)
everything is ok.
Thank you