0

Ich möchte einen Timer verwenden, um eine Zeit auszuführen, anzuhalten und zu stoppen.Wie man richtig Timer mit Gewinde in Xamarin verwendet?

Ich habe mehrere Tage damit verbracht, zu suchen, wie man einen Timer am besten benutzt, weil, wie Sie wissen, es keinen Timer direkt gibt, außer es zu schaffen.

so folgte ich diese Informationen durch einen Timer erstellen, unter Verwendung einer Zeitspanne, Timercallback und Stoppuhr:

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/

denke ich, dass Stoppuhr das Beste ist. Und mit mehreren Manupulationen habe ich, was ich wollte, aber das Problem ist, dass die Zeit abläuft, dass ich jedes Mal, wenn ich den Run-Button drücke, einmal auf den Button drücken soll.

Mit einem Thread hatte ich auch getan, aber es ändert nichts. Ich weiß nicht, warum das so ist.

Und es ist das gleiche mit einem Datetime, ich möchte, dass die Zeit des Datetime weiterhin ausgeführt wird, während ich keine andere Taste gedrückt habe, um es zu stoppen.

Wenn jemand eine Idee haben würde, es wirklich danke im Voraus.

+0

Sie haben nicht wirklich uns eine Frage gestellt. SO ist eine Q & A-Site, um eine gute Antwort zu erhalten, hilft es, zuerst eine gute Frage zu stellen. Ich würde vorschlagen, dass Sie die relevanten Teile Ihres Codes veröffentlichen und versuchen, das Problem, das Sie damit haben, genauer zu erklären. So wie es ist, ist es sehr schwer zu verstehen, was du willst. – Jason

+0

Hallo, ja, ich kann genauer sein. Tatsächlich muss ich meinen Chronometer laufen lassen (eine Taste mit einer Bezeichnung für die Anzeige), aber das Problem ist, dass ich derzeit jedes Mal die Taste drücken muss, um den Chronometer Millisekunden in Millisekunden zu laufen, anstatt nur einmal auf die Taste zu drücken. –

Antwort

0

Wie gesagt, ich denke ich habe was ich würde. Aber ich muss nur einmal die Taste drücken, um den Chronometer laufen zu lassen, anstatt ihn jedes Mal mit einer Inkrementierung der Zeit Millisekunden für Millisekunden zu drücken.

So, hier ist mein chronoTimer.cs dafür:

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; 

Und dann auf meiner buttonTimer_OnClicked Methode:

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(); 

}