如何在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(); 

  • 如何在Xamarin.Android中使用SharedPreferences?
  • ScrollView允许内容溢出
  • 防止在方向更改时重新启动活动
  • Xamarin for Android(Mono for Android)与原生Android开发相比如何?
  • Xamarin C# - Android - 防止AlertDialog关闭PositiveButton点击
  • AndroidGameWindow.SetDisplayOrientation NullReferenceException
  • ActionBarSherlock for Mono for Android的jar-Binding
  • 如何以编程方式一致地设置EditTextselect的下划线颜色
  • 为什么不使用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