private void timer_tick(object sender, EventArgs e) { Thread t1; Thread t2; Thread t3; Thread.Sleep(100); //if (!planner.MonitorOS()) if (!planner.check()) // checks existing of locker files { if (completed1 && completed2 && completed3) { data.RefreshAndParse(); completed1 = false; completed2 = false; completed3 = false; } completed1 = data.get_list_texts().Count == 0 ? true : completed1; completed2 = data.get_list_links().Count == 0 ? true : completed2; completed3 = data.get_list_imgs().Count == 0 ? true : completed3; if (planner.queue[planner.GetCurrent()].f1 == 1 && !completed1) // block for statring first thread { t1 = new Thread(() => WorkWithJson.save(data.get_list_texts(), 1, ref completed1)); t1.Start(); } else if (planner.queue[planner.GetCurrent()].f1 == 4) { t1 = new Thread(() => interferingFunc(1)); t1.Start(); } if (planner.queue[planner.GetCurrent()].f2 == 2 && !completed2) // block for statring second thread { t2 = new Thread(() => WorkWithJson.save(data.get_list_links(), 2, ref completed2)); t2.Start(); } else if (planner.queue[planner.GetCurrent()].f2 == 4) { t2 = new Thread(() => interferingFunc(2)); t2.Start(); } if (planner.queue[planner.GetCurrent()].f3 == 3 && !completed3) // block for statring third thread { t3 = new Thread(() => WorkWithJson.save(data.get_list_imgs(), 3, ref completed3)); t3.Start(); } else if (planner.queue[planner.GetCurrent()].f3 == 4) { t3 = new Thread(() => interferingFunc(3)); t3.Start(); } } planner.CurrentIncrement(); // increments current state of planned step planner.indexControl(); // generates new 100 steps if сurrent steps are over }