定时器不工作

时间:2014-07-26 08:27:55

标签: c# windows-phone-8

我希望每10秒运行一次GetCurrentLocation()方法,但只有在加载页面时才会捕获该位置一次。我该如何纠正?这是WP代码:

 private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
    {
        Callback(true);
    }
 private static Timer timer;
    private  void Main()
    {
        timer = new Timer(Callback, null, 10000, Timeout.Infinite); 
    }

    private void Callback(Object state)
    {
        GetCurrentLocation();
    }

1 个答案:

答案 0 :(得分:6)

永远不会调用Main方法。

您只能在加载页面时直接调用Callback,以便永远不会启动计时器。

在Loaded处理程序中调用Main。

同时将TimeOut.Infinite更改为实际数字。此参数设置计时器的滴答之间的时间,而不是它将运行多长时间!

另外:制作计时器private而不是private static;就我所见,没有充分的理由让它静止:

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
    StartTimer();
}

private Timer timer;

private void StartTimer()
{
    // start now and repeat every 10 seconds
    timer = new Timer(TimerCallback, null, 0, 10000); 
}

private void TimerCallback(Object state)
{
    GetCurrentLocation();
}