Métodos asíncronos en Windows 8.1 y Windows Phone 8.1

Habitualmente las instrucciones de un programa se ejecutan de manera síncrona, es decir, una tras otra, sin embargo en determinadas circunstancias se puede necesitar que esto no sea así.
Por ejemplo, podemos tener una lista cuyo contenido deseamos que cargue al inicio de nuestra aplicación pero que ello no implique que tengamos que esperar a que termine de cargarse para poder interactuar. Es el momento perfecto para crear un método asíncrono que se ejecute en segundo plano mientras hacemos otras cosas; cuando necesitemos que estos datos se muestren “esperaremos” a que la tarea de carga termine (si es que no ha terminado ya) y mostramos los datos. Pero vamos por partes:

Vamos a crear un método asíncrono que rellene una lista con elementos del tipo “Vegetales”; éste método devolverá una tarea de tipo Task, en este caso una ObservableCollection:

Seguidamente crearemos en nuestro ViewModel un comando que ejecutará un método encargado de esperar a que esta tarea termine, asigne el resultado de la tarea a nuestra lista de vegetales y actualice la visibilidad de la lista en la Vista:

En el constructor inicializamos nuestro Command:

Crearemos un botón en nuestro XAML y lo bindaremos a nuestro comando:

 

Os podéis descargar un ejemplo en el siguiente enlace: AsyncTasks.Sample.Universal.zip

Nota: En el ejemplo encontraréis otro método asíncrono llamado GetVegetablesWithDelayAsync que espera 5 segundo hasta terminar la tarea, lo que os permitirá haceros una mejor idea de como el operador “await” espera a la tarea.

Leave a Reply

Your email address will not be published. Required fields are marked *