Отслеживание изменений состояний программы в отдельном потоке - C#
Формулировка задачи:
Как отследить изменения состояний программы, в потоке отдельном от основного потока, я придумал вариант только с таймером но как его запустить в отдельном потоке не знаю, хотел использовать много поточный таймер но он создает каждый тик в новом потоке а мен необходимо чтобы новый тик не начинался пока не закончится предыдущий
Решение задачи: «Отслеживание изменений состояний программы в отдельном потоке»
textual
Листинг программы
using System; using System.Threading; namespace ConsoleApplication1 { class Program { private static int a, b, c; static void Main(string[] args) { Thread t1 = new Thread(Init); Thread t2 = new Thread(IncrementValues); t1.Start(); t2.Start(); Console.ReadKey(); t2.Abort(); while (t1.IsAlive && t2.IsAlive) ; } static void Start(object o) { string postfix = string.Empty; DateTime ts = DateTime.Now; a = ts.Second; Console.Clear(); if (c < a) postfix = "c < a "; else postfix = "c > a "; if (b < a) postfix += " b < a "; else postfix += " b > a "; Console.WriteLine("Time is {0}:{1}\n{2} a({3}) b({4}) c({5})\nPress any key to exit...", ts.ToShortTimeString(), ts.Second.ToString(), postfix, a.ToString(), b.ToString(), c.ToString()); } static void Init(object o) { a = DateTime.Now.Second; b = 60 - DateTime.Now.Minute; c = 60 - b; Timer tmr = new Timer(new TimerCallback(Program.Start), DateTime.Now.TimeOfDay, 0, 1000); } static void IncrementValues(object o) { Thread.Sleep((60 - DateTime.Now.Second) * 1000); do { b = 60 - DateTime.Now.Minute; c = 60 - b + 5; Thread.Sleep(60000); } while (1 == 1); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д