public void Run() { Util.message("Запустили поток по формулам"); Context blcon = Server.getContext(Server.PointBlinds); do { tm = DateTime.Now; Util.time = tm; this.intime = tm.Ticks; int count = 0; for (int i = 0; i < blcon.Count; i++) { //Util.message("i=" + i.ToString()); Context bc = Server.getContext(blcon.getChaild(i)); if (bc == null) { Util.errorMessage("Нет контеста формулы ", i.ToString()); return; } if (bc.Type != Util.TypeContext.Blinds) { Util.errorMessage("В контексте не формула ", i.ToString()); return; } Blind bb = (Blind)bc.defContext; count += (bb.goBlind(intime))?1:0; } DateTime tmnow = DateTime.Now; int st = (int)((tmnow.Ticks - tm.Ticks) / 10000); // если превышено время обхода в 100 миллисекунд генерируется предупреждение с указанием колличества циклов if (st > steptime) { Util.errorMessage( "Предупреждение!!! Время цикла обработки [" + st.ToString() + "] превысило нормальное значение работы цикла [" + steptime + "]; колличество циклов " + count + "\r\n", "MainLoop"); st = 0; } else { st = steptime - st; } //Util.message("Ждем "+st.ToString()); if (st > 0) { Thread.Sleep(st); } Util.blink = !Util.blink; } while (true); }