Scheduled values in .NET UWP Applications

Scheduled values in .NET UWP Applications

Scheduled values in .NET UWP Applications

#InsideVagon

#InsideVagon

#InsideVagon

sofware engineer and part-time dj at Vagon

Published on September 5, 2020

Published on September 5, 2020

Published on September 5, 2020

Table of Contents

Need to change the value of any property after a certain time?

As a software engineer of vagon Team, with this blog post, I am thrilled to announce that: yes we are working on a native UWP application for our product.

On the XAML part of UWP applications best practive is to use converters most of the time. These converters set values to properties of elements depending on your data. Of course, this is also the case for vagon native UWP application.

Let’s focus on the problem right now. While we are developing any application, we handle validations, error response, etc. But the problem is, we want error messages and notifications to disappear after a certain amount of time. In our case, we have a converter that is responsible for changing the visibility of any element depending on whether the string value is empty or not. And with this converter, we’re able to make them disappear after t seconds.

Here’s ScheduledValue.cs

using System; using System.Timers; namespace Vagon { public class ScheduledValue<T> { private readonly T _value; private readonly Timer _timer; private readonly Action<T> _action; /// <summary> /// /// </summary> /// <param name="action">Object</param> /// <param name="value">Object</param> /// <param name="interval">In Milliseconds</param> public ScheduledValue(Action<T> action, T value, int interval = 1000) { _value = value; _action = action; _timer = new Timer(interval); _timer.Elapsed += Timer_Elapsed; } private void Timer_Elapsed(object sender, ElapsedEventArgs e) { _timer.Stop(); _action?.Invoke(_value); } public void Schedule() { _timer.Start(); } } } view raw ScheduledValue.cs hosted with ❤ by GitHub

It looks really simple. Right? We don’t want to create lots of timers and other control structures for every page. To create this generic class with only three parameters. First, you need to pass the action with type T, then value itself and an interval. When you use the “Schedule” method, It will trigger your action with the “T” value.

It’s a very simple way to implement debouncing on any given action as well. I hope it’s helpful for you too.

Thanks for reading. If you wanna convert this simple code block to the NuGet package, feel free to do so.

Get Beyond Your Computer Performance

Run applications on your cloud computer with the latest generation hardware. No more crashes or lags.

Trial includes 1 hour usage + 7 days of storage.

Get Beyond Your Computer Performance

Run applications on your cloud computer with the latest generation hardware. No more crashes or lags.

Trial includes 1 hour usage + 7 days of storage.

Ready to focus on your creativity?

Vagon gives you the ability to create & render projects, collaborate, and stream applications with the power of the best hardware.