Я хочу перейти на новый View Controller, когда таймер обратного отсчета, здесь установленный на 10 секунд, достигает 0 секунд. это делается с помощью логики потока ниже. на этикетке обычно отображается обратный отсчет «10, 9, 8, 7», но поскольку я использовал ViewDidAppear, он не отображается. в конце он мигнет 0 секунд, и произойдет переход. мне нужен обратный отсчет, чтобы показать все время, и я не могу понять, как и почему он исчезает
с использованием System.Timers;
используя System.Threading;
...
частный System.Timers.Timer mytimer;
private int countSeconds;
...
public override void ViewDidLoad()
{
base.ViewDidLoad();
mytimer = new System.Timers.Timer();
//Trigger event every second
mytimer.Interval = 1000; //1000 = 1 second
mytimer.Elapsed += OnTimedEvent;
countSeconds = 10; // 300 seconds
mytimer.Enabled = true;
mytimer.Start();
}
private void OnTimedEvent(object sender, ElapsedEventArgs e)
{
countSeconds--;
int seconds = countSeconds % 60;
int minutes = countSeconds / 60;
string DHCountdownTime = (countSeconds / 60).ToString() + ":" + (countSeconds % 60).ToString("00"); //to give leading 0. so 9 seconds isnt :9 but :09
InvokeOnMainThread(() =>
{
lblTimer.Text = DHCountdownTime;
});
if (countSeconds == 0)
{
mytimer.Stop();
}
}
...
public override void ViewDidAppear(bool animated)
{
base.ViewDidAppear(animated);
Thread.Sleep(countSeconds * 1000);
PerformSegue("DHSegue", this);
...