И вот к чему я пришел -
Используйте
- System.Timers.Timer
- System.Windows.Forms.Timer
- System.Threading.Timer
Если предположить, что у вас однопоточное приложение (а они большинство), ваше приложение прекратит отвечать на все запросы, а не просто остановится на время, как можно подумать.
Для контроля (сколько времени реально выполнялось) можно использовать System.Diagnostics.Stopwatcth
Пример кода -
using System; using System.Diagnostics; namespace TimerTest { class Program { static System.Timers.Timer aTimer; static Stopwatch stopwatch = System.Diagnostics.Stopwatch.StartNew(); static void Main(string[] args) { aTimer = new System.Timers.Timer(2000); aTimer.Elapsed += OnTimedEvent; //Разовое выполнение таймера aTimer.AutoReset = false; aTimer.Enabled = true; Console.WriteLine("Press the Enter key to continue the program at any time... "); Console.ReadLine(); TimeSpan ts = stopwatch.Elapsed; string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10); Console.WriteLine("RunTime " + elapsedTime); Console.ReadLine(); } private static void OnTimedEvent(Object source, System.Timers.ElapsedEventArgs e) { Console.WriteLine("The Elapsed event was raised at {0}", e.SignalTime); stopwatch.Stop(); } } }
Комментариев нет:
Отправить комментарий