• Home

Méthode virtuelle & async await

Introduction

Dans une application utilisant MVVM, j’écris souvent une classe de base pour mes ViewModels. Cela me permet par exemple de définir une méthode LoadData qui sera appelée automatiquement lorsque la vue est affichée. Voici un exemple d’implémentation de cette classe :

Navigation avec Windows Phone

Introduction

La première chose qui est un peu déroutante lorsque l’on écrit sa première application Windows Phone est la navigation entre les différentes vues. En effet contrairement à une application WPF, il faut utiliser le NavigationService pour basculer d’une vue à une autre. Or ce service n’est accessible qu’à partir du code de la vue. Et lorsque l’on utilise un Framework MVVM pour construire son application mobile, ce dernier ne sera donc pas accessible depuis un ViewModel. Nous allons donc voir dans cet article comment créer un handler de message (avec MVVM Light) qui prendra en charge la navigation entre les différentes vues et ce depuis n’importe quel ViewModel.

Définition du handler de message

Cette première étape consiste à enregistrer dans le code de la vue principale le message qui contient l’Uri de navigation et qui servira à appeler le NavigationService.

Async Await par l’exemple – Partie 1

Introduction

Cet article est le premier d’une série dont l’objectif est de fournir un exemple concret sur l’utilisation des nouveaux mots clés async et await. Pour débuter nous verrons l’utilisation des éléments suivants : CancellationTokenSource, Progress et ContinueWith.

Présentation du projet

Le projet qui servira d’exemple se base sur un problème mathématique : le tour du cavalier. Ce problème consiste à trouver une solution pour déterminer l’ensemble des chemins que peut parcourir un cavalier sur un échiquier sans jamais passer deux fois par la même case. Le projet ci-dessous calcul à partir d’une case donnée l’ensemble des solutions possibles.

Lightbox Image

Ce problème est intéressant dans le cadre de cet article car lancer les calculs en parallèle permet de trouver les solutions plus rapidement et donc ainsi mettre en œuvre nos mots clés async et await. Pour ce faire l’algorithme de résolution va construire un arbre des solutions. Ainsi pour chaque nœud de l’arbre qui représente une case, on lui ajoutera autant de branches qu’il y a de destinations possibles pour le cavalier. A la fin on obtient un arbre qui contient toutes les solutions.

Pourquoi la complexité du code est importante pour les tests unitaires

Lors de l’écriture d’un code complexe comme par exemple un algorithme de calcul, les tests unitaires sont des éléments importants car ils vont permettre de vérifier le bon fonctionnement de ce dernier.

Imaginons donc que notre application ait besoin d’un algorithme de calcul et que ce dernier puisse être écrit de la façon suivante :

Après l’écriture de cet algorithme, il sera nécessaire de réaliser un certains nombres de tests unitaires afin de s’assurer que le résultat retourné pour la méthode GetResult correspond bien à celui attendu.

Web Analytics