Я любитель для C#, и я делаю проект.Использование таймера для остановки другого таймера
Я использовал 3 таймера, где один таймер с 20 секундами. Я хочу, чтобы через 20 секунд остальные 2 таймера должны были остановиться
Я не могу получить доступ к другим 2 таймерам из круглого таймера. Вот код:
public void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
DispatcherTimer tgtTimer = new DispatcherTimer();
tgtTimer.Tick += new EventHandler(tgtTimer_tick);
tgtTimer.Interval = new TimeSpan(0, 0, 3);
tgtTimer.Start();
DispatcherTimer txbTimer2 = new DispatcherTimer();
txbTimer2.Tick += new EventHandler(txbTimer2_tick);
txbTimer2.Interval = new TimeSpan(0, 0, 0, 4, 000);
txbTimer2.Start();
DispatcherTimer rt = new DispatcherTimer();
rt.Tick += new EventHandler(rt_tick);
rt.Interval = new TimeSpan(0, 0, 1);
rt.Start();
}
private void tgtTimer_tick(object sender, EventArgs e)
{ //some code }
private void txbTimer2_tick(object sender, EventArgs e)
{ //some code }
int i = 20 //for the 20 sec round timer
private void rt_tick(object sender, EventArgs e) //round timer
{
if(i!=0)
{
i--;
txbTime.Text = "";
txbTime.Text = Convert.ToString(i) + "s";
}
else
{
this.Opacity = 0.3;
//tgtTimer and txbTimer2 can't be accessed from here
}
}
Как должен я остановить 2 таймеры?
Вам нужен рефери к тем таймерам. Самый простой способ сделать это - иметь поля на объекте, которые вы назначаете своим объектам таймера, а не использовать их в качестве локальных переменных в методе. – Chris
Переместите это из кнопки: DispatcherTimer tgtTimer = new DispatcherTimer(); Или вы можете встроить методы для тех таймеров, которые останутся в сфере охвата. –
if (i! = 0), это уменьшит вашу переменную «i», когда i будет ниже 0. Я не уверен, хотите ли вы этого. Может быть, измените его на i <0 – QuestionsEverywhere