Timer

This page describes how to trigger timed events using the MauiReactor Timer object

When developing an app may happen that you need a timer that raises events regularly. In MauiReactor, as in .NET MAUI applications, you can use the timer types provided by the runtime (for example, the System.Timers.Timer class).

In MauiReactor, I recommend taking a look at Timer type provided by the library that is better suited to be integrated into MVU applications.

A MauiReactor Timer can be created as any other widget and added as a child of any other object:

Grid(
    Timer()
        .IsEnabled(State.ShowCountdown)
        .Interval(1000) //interval in ms
        .OnTick(....)
)

Run the timer setting to true its IsEnabled property and pass an action to the OnTick property to implement your logic.

For example, in the following code, we create a timer and update a label every second:

class CounterPageState
{
    public int Counter { get; set; }
    public bool TimerRunning { get; set; }
}

class CounterPage : Component<CounterPageState>
{
    public override VisualNode Render()
        => ContentPage("Counter Sample",
            VStack(
                Timer()
                    .IsEnabled(State.TimerRunning)
                    .Interval(1000)
                    .OnTick(() => SetState(s => s.Counter++)),

                Label($"Counter: {State.Counter}"),

                Button(State.TimerRunning ? "Pause" : "Run")
                    .OnClicked(() => SetState(s => s.TimerRunning = !s.TimerRunning))
            )
            .Spacing(10)
            .Center()
        );
}

Last updated

Was this helpful?