30/09/2018, 18:53

Timer trong lập trình windows phone

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!!!

Văn Dương viết 20:55 ngày 30/09/2018

Đó 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();
    }
Ngô Thắng Quốc viết 21:05 ngày 30/09/2018

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(); 
}
Bài liên quan
0