2014-07-26 3 views
0

GetCurrentLocation() 메서드를 10 초마다 실행하려고하는데, 페이지가로드 될 때 위치가 한 번만 catch됩니다. 어떻게 해결할 수 있습니까? 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(); 
    } 

답변

6

Main 메서드는 절대로 호출되지 않습니다.

타이머가 시작되지 않도록 페이지를로드 할 때 콜백을 직접 호출하면됩니다.

로드 된 처리기에서 Main을 호출하십시오.

또한 TimeOut.Infinite을 실제 숫자로 변경하십시오. 이 매개 변수는 타이머가 실행되는 시간이 아니라 타이머의 틱 사이의 시간을 설정합니다.

또한 대신 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(); 
} 
+0

호출 간격과 기간에 대해 추가 팁을 추가했습니다. 그리고 이것을 코딩하는 방법에 대한 제안을 추가했습니다. –

관련 문제