Таймер обратного отсчета C# тогда сделайте что-нибудь
Посмотрел везде, но везде я смотрю есть другой способ сделать таймер обратного отсчета. Наконец-то нашел простой код. Как мне заставить это сделать что-то, когда время истекло.
Эта часть находится рядом с InitializeComponent();
timerlabel1.Text = TimeSpan.FromMinutes(720).ToString();
private void countdownTimer()
{
var startTime = DateTime.Now;
var timer = new Timer() { Interval = 1000 };
timer.Tick += (obj, args) =>
timerlabel1.Text =
(TimeSpan.FromMinutes(720) - (DateTime.Now - startTime))
.ToString("hh\\:mm\\:ss");
timer.Enabled = true;
}
Здесь мне нужна помощь, как мне заставить ее что-то делать, когда время истекло. Я пытался, если timer.Enabled =false; Сделай это. Не могу понять это.
4 ответа
Решение: вы можете назначить общее количество секунд [TotalMinutes*60]
в некоторую переменную и decrement
каждый раз Timer Tick
событие поднимается.
если totalseconds
значение становится zero
затем stop
таймер по телефону timer.Stop()
метод.
Попробуй это:
public int tootalsecs = 720 * 60;
private void countdownTimer()
{
var startTime = DateTime.Now;
var timer = new Timer() { Interval = 1000 };
timer.Tick += (obj, args) =>
{
if (tootalsecs==0)
{
timer.Stop();
}
else
{
timerlabel1.Text =
(TimeSpan.FromMinutes(720) - (DateTime.Now - startTime))
.ToString("hh\\:mm\\:ss");
tootalsecs--;
}
};
timer.Start();
}
Попробуйте это может работать для вас
var timer=new Timer();
timer.Interval=1000;
timer.tick += timer_Tick;
timer.Start();
int i=0;
void timer_Tick(object sender, EventArgs e)
{
if(i<TimeSpan.FromMinutes(720))
{
timerlabel1.Text =
(TimeSpan.FromMinutes(720) - (DateTime.Now - startTime))
.ToString("hh\\:mm\\:ss");
}
else
{
timer.Stop();
/* do other work Here */
}
i++;
}
Попробуйте с этим может работать на вас.
Как есть пара Timer
доступные классы (System.Windows.Forms.Timer
, System.Threading.Timer
а также System.Timers.Timer
) Я посоветую вам пойти с System.Timers.Timer
,
Это обеспечивает Elapsed
событие, а не Tick
событие. Это то, что вы ищете.
// Create a timer with a ten second interval.
aTimer = new System.Timers.Timer(10000);
// Hook up the Elapsed event for the timer.
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
// Set the Interval to 2 seconds (2000 milliseconds).
aTimer.Interval = 2000;
aTimer.Enabled = true;
Вы можете попробовать сделать, как показано ниже.
Инициализировать в глобальном масштабе.
var target;
timerlabel1.Text =target= DateTime.Now.Add(TimeSpan.FromMinutes(720));
Добавить таймер и в timer1_Tick
напишите код ниже
var span = targetTime - DateTime.Now;
if (span.TotalSeconds > 0)
{
//it will continue till the time ends.
var temp = span.ToString();
temp=temp.Substring(0, 8);
timerlabel1.Text = temp;
}
else
//do your work here
Не забудьте подтвердить ответ или пометить как ответ, если он близок к вашим потребностям