Lỗi Event Tick trong DispatcherTimer

Em đang làm một cái app nhỏ về countdown time bằng ngôn ngữ xaml, em dùng DispatcherTimer để có thể đếm thời gian trong nó, nhưng trong quá trình chạy, event Tick của DispatcherTimeer nó chỉ lặp 1 lần dẫn đến label cũng chỉ cập nhật 1 lần :
Dưới đây là code của em :

    public MainWindow()
    {
        InitializeComponent();
        DispatcherTimer timer = new DispatcherTimer();
        timer.Interval = TimeSpan.FromSeconds(1);
        timer.Tick += Timer_Tick;
        timer.Start();
    }
    private void Timer_Tick(object sender, EventArgs e)
    {
        TimeSpan timeSpan = new TimeSpan(20, 00, 00);
        int hour = timeSpan.Hours;
        int minute = timeSpan.Minutes;
        int second = timeSpan.Seconds;
        
        if (second != 0)
        {
            second -= 1;
        }
        else if (second == 0 && minute == 0)
        {
            second = 60;
            minute = 59;
            hour -= 1;
        }
        else if (second == 0)
        {
            minute -= 1;
            second = 60;
        }
        else if (hour == 0 && minute == 0)
        {
            lbCheck.Visibility = Visibility.Visible;
            lbTime.Content = "00  :  00  :  00";
        }
        
        lbTime.Content = hour.ToString() + "  :  " + minute.ToString() + "  :  " + second.ToString();
        
    }

Mong mọi người giúp đỡ !

  1. DispatcherTimer không chạy 1 lần, nó chạy liên tục mỗi giây và Label luôn cập nhật mỗi giây.
  2. Trong Timer_Tick bạn viết sai, bạn luôn luôn tạo mới một TimeSpan cố định sau mỗi giây và giá trị nó luôn luôn là new TimeSpan(20, 00, 00), nó không có thay đổi gì => kết quả in ra Label luôn là 1 giá trị.
3 Likes

Cảm ơn bạn nhiều :smiling_face_with_three_hearts: :smiling_face_with_three_hearts:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?