Как я могу сделать анимацию с таймером?

#c# #multithreading #timer #console

Вопрос:

Я хотел создать метод, который использовал бы таймер и текст ascii и изменял текст, когда таймер достигал 1 секунды, и обратно, когда таймер достигал 2. Я создал этот таймер, но не знал, как его использовать для этого метода. Кто-нибудь может помочь?

 public void TimePassed()
{
    Timer t1 = new Timer(1000);
    t1.Elapsed  = Timer_Elapsed;

    t1.Start();

    Console.ReadKey();

    t1.Stop();
}

public void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
    timerPlayerOneAnimation  ;
    Console.WriteLine(timerPlayerOneAnimation   " "   DateTime.Now);
}
 

Комментарии:

1. Вы пробовали Timer_Elapsed просто проверить время таймера и, если оно больше двух, отменить анимацию? Что-то вроде if(sender is Timer timerObj) if(timerObj.ElapsedTime >= 2000) // do something

Ответ №1:

Просто проверьте, четный или нечетный у вас счетчик?

 public void Timer_Elapsed(object sender, ElapsedEventArgs e)
{
    // possibly set the cursor position?
    Console.SetCursorPosition(someRow, someColumn);

    timerPlayerOneAnimation  ;
    if (timerPlayerOneAnimation % 2 == 0) {
        // Display one thing
    }
    else {
        // Display something else
    }        
}