En utilisant le verrou, je sais que s'il y a un appel ultérieur, celui-ci attendra la fin de l'appel précédent. Que se passe-t-il si je ne veux pas que l'appel suivant attende et qu'il saute ce bloc de code ?
Je crée actuellement un clavier sur un périphérique qui écoute les entrées d'autres périphériques. J'ai un timer qui vérifie l'entrée du périphérique dans 500millisecondes.
keyboardTimer = new Timer(500);
keyboardTimer.Elapsed += (sender, e) =>
{
lock (RemoteControlPage.keyboardLock)
{
var keyboardStatus = LauncherClient.Instance.GetKeyboardStatus();
if (keyboardStatus.Visibility == KEYBOARDVISIBILITY.SHOW)
{
//Show keyboard
}
else if (keyboardStatus.Visibility == KEYBOARDVISIBILITY.HIDE)
{
//Hide keyboard
}
else {
Debug.WriteLine("Keyboard = Do Nothing");
}
}
};
Dans le code, je dispose d'un verrou au cas où deux personnes ou plus appelleraient à le saisir à chaque fois. Elapsed se déclenchera à nouveau même si l'appel précédent n'a pas terminé le traitement, ce qui entraîne l'attente de l'appel suivant. Existe-t-il un moyen de sauter l'exécution au lieu d'attendre que l'appel précédent ait fini d'être traité ?