Reset timer mỗi khi ấn vào button

Mình có code trong windows phone như thế này

 private void btnrun_Click(object sender, RoutedEventArgs e)
    {
        // set thời gian;
        t = 0;
        Start_timer();
    }

 public void Start_timer()
    {
        timer2 = new DispatcherTimer();
        timer2.Tick += timer_Tick2;
        timer2.Interval = new TimeSpan(0, 0, 0, 0, 1000);
        timer2.Start();
    }

    void timer_Tick2(object sender, object e)
    {
        t++;
        txttime.Text = t.ToString();
    }

khi chạy lần đầu thì hiện thị đúng từ 1,2,3,4… nhưng khi click lần 2 thì lại bài đầu từ 2, 4, 6… click lần 3 thì hiển thị 3, 6…
Có cách nào reset lại cho nó chạy từ 1,2,3,4 khi mình click vào button mỗi lần click không?
Mình cảm ơn!!!

Đó là sau mỗi lần bạn lại có thêm :

timer2.Tick +=timer_Tick2;

Mỗi lần bạn click thì Tick được add thêm hàm timer_Tick2 ( += mà) nên số lần hàm timer_Tick2 được gọi sẽ tăng lên.

Bạn nên kiểm tra Timer.Tick, nếu nó được gán rồi thì thôi không gán nữa. Và biến timer cũng chỉ có 1 cái thôi (không tạo mới timer trong hàm)


 DispatcherTimer timer2 = new DispatcherTimer();
 public void Start_timer()
    {
        if(timer2.Tick==null)
             timer2.Tick += timer_Tick2;
        timer2.Interval = new TimeSpan(0, 0, 0, 0, 1000);
        timer2.Start();
    }
1 Like

mình xử lý được cái đó rồi, cảm ơn đã góp ý
thêm vào dòng này trong Start_timer()

if (timer2 != null)
{
    timer2 -= timer_Tick2;
    timer2.Stop(); 
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?