как написать на C# секундомер, который будет работать в консоле и показывать не только секунды, но и минуты?
заранее Спасибо)
заранее Спасибо)
Использовать для этого компонент Timer.
если написать то
using System;
using System.Threading;
namespace ConsoleApplication60
{
class Program
{
static void Main(string[] args)
{
var periodicity = new TimeSpan(0, 0, 1);
Thread th = new Thread(Timer);
th.Start(periodicity);
}
public static void Timer(object periodicity)
{
var time = default(TimeSpan);
var thePeriodicity = (TimeSpan)periodicity;
while (true)
{
Thread.Sleep(thePeriodicity);
time = time.Add(thePeriodicity);
Console.Clear();
Console.WriteLine(time);
}
}
}
}
Берем либо реализацию с таймером, либо с отдельным потоком и его засыпанием (лучше с таймером) . Перед его непосредственным запуском сохраняем время в какой-нибудь переменной. В каждой итерации берем текущее время, вычитаем из него сохраненное и выводим на экран, либо проводим другие манипуляции.
Это решение не зависит ни от планировщика, который пробуждает потоки, ни от времени выполнения других инструкций в пределах данного потока и будет точнее в более длительной перспективе. В противном случае ошибка может накапливаться со временем выполнения программы.
Если есть секунды
283сек / 60 = 4 мин
283сек % 60` =43сек
4мин 43сек