rksoftware

Visual Studio とか C# とかが好きです

Xamarin Forms でタイマー処理をする

Xamarin.Forms で一定間隔の時間毎に何か処理をしたい場合、Xamarin.Forms.Device クラスの StartTimer メソッドが使えます。

■ コード

public partial class MainPage : ContentPage
{
    public MainPage()
    {
        InitializeComponent();

        // UI の構築。StartTimer メソッドの使い方とは関係がない
        var sl = (StackLayout)(this.Content = new StackLayout());
        var label = new Label();
        sl.Children.Add(label);

        // StartTimer メソッドの使い方
        Xamarin.Forms.Device.StartTimer(new TimeSpan(33), ()=>
        {
            label.Text = DateTime.Now.ToString("yyyy/MM/dd HH:mm:dd.sss");
            return true;
        });
    }
}

実行すると次のように現在日時が表示され、33ミリ秒ごとに更新されます。
f:id:rksoftware:20180114235611j:plain

■ 解説

第一引数
実行の間隔を設定します。ここで設定した間隔ごとに第二引数で設定した処理が実行されます。

第二引数
一定間隔ごとに実行したい処理を設定します。今回はコードを短くするためにラムダ式で記述していますが、メソッドにして OK です。
第二引数の戻り値
第二引数の処理は一定間隔で呼ばれますが、false を return するとタイマーが終了し以降は呼ばれなくなります。
例えば、三回だけ処理を実行したい場合は、三回目に呼ばれた際に false を return すれば OKです。
もし無限に繰り返したい場合は、常に true を return すれば OK です。