Таймер перестает работать после того, как я нажимаю кнопку, чтобы остановить / запустить его - PullRequest
0 голосов
/ 03 мая 2020

Таймер полностью перестает работать, он не запустится снова после того, как я остановлю его, как я могу это исправить?

Я пытаюсь сделать так, чтобы он переключался с 1 кнопки. Первое нажатие переключает его, если сетка видна.

если сетка нежизнеспособна, она остановит таймер / не запустит таймер. У меня таймер ссылается на другую сетку на основе того же, что и выше, но для другой функции.

Я довольно новичок в C# и wpf.

Если мне нужно дать вам, ребята, дополнительную информацию для этого, просто спросите, Этот код находится в другом окне, чем главное окно.

Ссылка на главное окно - это AS, который у меня выше в коде этого окна.

Главное окно ссылается на это окно для открытия / закрытия.

private System.Windows.Threading.DispatcherTimer timer1;

public void InitTimer()
{
    timer1 = new System.Windows.Threading.DispatcherTimer();
    timer1.Tick += new EventHandler(timer1_Tick);
    timer1.Interval = TimeSpan.FromMilliseconds(2000); // in miliseconds
    timer1.Start();
}

private void timer1_Tick(object sender, EventArgs e)
{
    if (AS.Vis.Visibility != Visibility.Visible == false)
    {
        AS.Vis.Visibility = Visibility.Hidden;
    }
    else
    {
        AS.Vis.Visibility = Visibility.Visible;

        Fin();

        timer1.Start();
    }
}

private void Auto(object sender, RoutedEventArgs e)
{
    try
    {
        if (AS.tmr.Visibility != Visibility.Visible == false)
        {
            AS.tmr.Visibility = Visibility.Hidden;
            AKS.Foreground = new SolidColorBrush(Colors.Red);
            AKS.FontWeight = FontWeights.Bold;
            timer1.Stop();
        }
        else
        {
            AKS.Foreground = new SolidColorBrush(Colors.LimeGreen);
            AKS.FontWeight = FontWeights.Bold;
            AS.tmr.Visibility = Visibility.Visible;
            InitTimer();
            timer1.Start();
        }
    }
    catch (Exception)
    {
    }
}

1 Ответ

0 голосов
/ 04 мая 2020

Является ли метод Авто (объект-отправитель, RoutedEventArgs e) единственный метод, который может запустить таймер (в случае timer1_Tick таймер также запускается, но сначала, если я понимаю Ваш код исправлен правильно, метод Авто (объект-отправитель, RoutedEventArgs e) должен вызывать)? Когда этот метод вызывается? Возможно, вы можете добавить это к вопросу.

Если вызывается метод ( Авто (...) ), вы можете проверить условие if . Возможно, он никогда больше не будет go в случае else .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...