2017-10-17 8 views
-1

私はこれをx回行っていますが、今日、それは動作しないことに決めました。多分私は盲目になったでしょうか?コードのシンプルな作品:Xamarin:OnTimedEvent()Not Firing(TIMERS)

private TextView txt; 
    private Timer _timer; 
    private int seconds; 

    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 
     SetContentView (Resource.Layout.Main); 
     txt = FindViewById<TextView>(Resource.Id.testTextView); 
     seconds = 0; 
     Timer(); 
    } 

    void Timer() 
    { 
     _timer = new System.Timers.Timer(); 
     _timer.Interval = 100; 
     _timer.Elapsed += OnTimedEvent; 
     _timer.Enabled = true; 
     _timer.Start(); 
    } 

    private void OnTimedEvent(object sender, System.Timers.ElapsedEventArgs e) 
    { 
     seconds += 1; 
     CountDown(); 
    } 

    void CountDown() 
    { 
     txt.Text = seconds.ToString(); 
    } 

しかしOnTimedEventが呼び出さ取得されていません。決して。なぜ?!

+0

を行く今ではより多くの奇妙なを取得します。私は、設定したブレークポイントをカント... –

+0

私はデバッグにしています。私は自分のPCを再起動して、今度は再びブレークポイントを設定することができます! (決して前に起こったことはありませんでした...)とにかく:私はブレークポイントを一度打っています。まだontimedeventは起こっていません... –

+0

何か私はちょうど目撃しました:いつも私はバックグラウンドでアプリを入れて、カウントダウンを戻って動作するように見えた。私はちょうど質問を編集し、カウントダウン方法を設定しました。レイアウトのテキストに0.1秒ごとに1を加えたいだけです。いつでも私はバックグラウンドにアプリを入れて、th番目のテキストを変更して番号を返します。ここで何が起こっているのですか?xD –

答えて

0

ありがとうございました皆さん、ありがとうございました: タイマーは機能していましたが、UI要素をUIスレッドから変更できませんでした。私はこれを行う場合を除き:

 RunOnUiThread(() => txt.Text = seconds.ToString()); 

をそしてそこに私たちは:)