0

타이머를 사용하여 시간을 실행하고 일시 중지하고 중지하고 싶습니다.올바르게 사용하는 방법 Xamarin에 스레드가있는 타이머?

은 며칠을 가장 좋은 방법으로 타이머를 사용하는 방법을 검색했습니다. 왜냐하면 아시다시피 타이머를 만들지 않는 한 직접 타이머가 존재하지 않기 때문입니다.

그래서, 나는 시간 범위, timercallback 및 스톱워치를 사용하여 타이머를 생성하여 이러한 정보를 다음 :

Timer doesn't contain in System.Threading at Xamarin.Forms

https://developer.xamarin.com/api/namespace/System.Timers/

https://developer.xamarin.com/api/type/System.Diagnostics.Stopwatch/

내가 그 스톱워치가 최고라고 생각합니다. 그리고 여러 manupulation과 함께, 내가 원했던 것이 있지만, 문제는 실행 버튼을 누를 때마다 버튼을 한번 눌러야한다는 것입니다.

스레드로도 수행했지만 아무 것도 변경하지 않았습니다. 왜 그렇게하는지 모르겠습니다.

그리고 Datetime과 동일합니다. 다른 버튼을 누르지 않은 상태에서 Datetime 시간이 계속 실행되기를 바랍니다.

누군가가 아이디어를 얻으려면 사전에 정말로 감사드립니다.

+0

. 그래서 Q & A 사이트이므로 좋은 답변을 얻으려면 먼저 좋은 질문을하는 것이 좋습니다. 코드의 관련 부분을 게시하고 문제를보다 간결하게 설명하는 것이 좋습니다. 원하는대로 이해하는 것은 매우 어렵습니다. – Jason

+0

안녕하세요, 맞습니다. 더 정확할 수 있습니다. 사실, 크로노 미터 (표시 할 레이블이있는 버튼)를 사용해야하지만 문제는 현재 버튼을 한 번만 누르는 대신 밀리 초 단위로 밀리 초 단위로 크로노미터를 실행하기 위해 버튼을 누를 필요가 있다는 것입니다. –

답변

0

내가 말했듯이 나는 내가 갖고있는 것 같아. 하지만 시간 밀리 초 단위로 밀리 초 단위로 누를 필요없이 버튼을 한 번만 눌러 크로노 미터를 실행해야합니다.

그래서, 여기에 내 chronoTimer.cs입니다 : 내 buttonTimer_OnClicked 방법에

class TimerExpand 
     { 
      public int counter = 0; 
      public System.Threading.Timer threadTimer; 
     } 


public static void Temps() 
     { 

      TimerExpand t_expand = new TimerExpand(); 

      TimerCallback timerDelegate = new TimerCallback(GetTime); 

      System.Threading.Timer timer = new System.Threading.Timer(timerDelegate, t_expand, 0, 1000); 

      t_expand.threadTimer = timer; 


    } 

public static void GetTime(object etat) 
     { 
      TimerExpand t_expand = (TimerExpand) etat; 
      t_expand.counter++; 

     } 


private DateTime actualDate; 
public static Stopwatch sw; 

: 그리고 당신은 실제로 우리에게 질문을하지 않은

actualDate = DateTime.Now; 
sw = new Stopwatch(); 



       sw.Start(); 

    labelChrono.Text = string.Format("{0:00}:{1:00}:{2:00}:{3:00}", sw.Elapsed.Hours, sw.Elapsed.Minutes, sw.Elapsed.Seconds, 
        sw.Elapsed.Milliseconds); 

labelDate.Text = DateTime.Now.ToString(); 

      Temps(); 

}