Timer and update DB

Viewed 15

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

0 Answers
Related