如何在Xamarin C#Android中实现CountDownTimer类?

我是Xamarin.Android框架的新手。 我正在倒数计时器,但无法实现像java CountDownTimer类 。 任何人都可以帮我把下面的java 代码转换成C#Xamarin android代码。

  bar = (ProgressBar) findViewById(R.id.progress); bar.setProgress(total); int twoMin = 2 * 60 * 1000; // 2 minutes in milli seconds /** CountDownTimer starts with 2 minutes and every onTick is 1 second */ cdt = new CountDownTimer(twoMin, 1000) { public void onTick(long millisUntilFinished) { total = (int) ((dTotal / 120) * 100); bar.setProgress(total); } public void onFinish() { // DO something when 2 minutes is up } }.start(); 

Solutions Collecting From Web of "如何在Xamarin C#Android中实现CountDownTimer类?"

为什么不使用System.Timers.Timer呢?

 private System.Timers.Timer _timer; private int _countSeconds; void Main() { _timer = new System.Timers.Timer(); //Trigger event every second _timer.Interval = 1000; _timer.Elapsed += OnTimedEvent; //count down 5 seconds _countSeconds = 5; _timer.Enabled = true; } private void OnTimedEvent(object sender, System.Timers.ElapsedEventArgs e) { _countSeconds--; //Update visual representation here //Remember to do it on UI thread if (_countSeconds == 0) { _timer.Stop(); } } 

另一种方法是启动一个asynchronousTask ,它内部有一个简单的循环,并使用CancellationToken取消它。

 private async Task TimerAsync(int interval, CancellationToken token) { while (token.IsCancellationRequested) { // do your stuff here... await Task.Delay(interval, token); } } 

然后开始

 var cts = new CancellationTokenSource(); cts.CancelAfter(5000); // 5 seconds TimerAsync(1000, cts.Token); 

只要记住赶上TaskCancelledException