public void Start(int id, int tick,int warningtime) { var user = users.FirstOrDefault(x=>x.ID==id); if(user==null) { UserGroups cluser = new UserGroups(); if(users.Count>=1) { multiple += 1; } else { multiple = 1; } cluser.ID = id; cluser.counter = tick; cluser.timers = new Timer(); if(multiple>1) { cluser.timers.Interval = 1000 * (multiple*10*1.5); } else { cluser.timers.Interval = 1000; } cluser.timers.Elapsed += TimerTick; cluser.warnTime = warningtime; users.Add(cluser); cluser.timers.Start(); } else { //activated the exist timer if (user.counter == 0 && user.warnTime == 0 && user.ID == id) { user.counter = tick; user.timers = new Timer(); if (multiple > 1) { user.timers.Interval = 1000 * (multiple * 10 * 1.5); } else { user.timers.Interval = 1000; } user.timers.Elapsed += TimerTick; user.warnTime = warningtime; user.timers.Start(); } } }
private void TimerTick(object sender, ElapsedEventArgs e) { List<object> result = new List<object>(); var context = GlobalHost.ConnectionManager.GetHubContext<TimerHub>(); foreach(var item in users) { // kill timer automatically after 1 hour if(item.counter==-3600) { TimerHub Obj = new TimerHub(); Obj.Stop(item.ID); } //broadcast just the active timer if(item.warnTime!=0) { item.counter--; bool warning = false; //set the timer item string timerResult = CalculateCountTimer(item.counter); if (item.counter <= item.warnTime) { warning = true; } else { warning = false; } //item for send to client result.Add(new { scn = item.ID, warning = warning, resultTime = timerResult, reset = false }); } } context.Clients.All.countdown(result); }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)