System.Reflection.TargetInvocationException provoqué par Java.Lang.RuntimeException

Ajouté par Alexandre Journaux il y a environ 16 heures

Après la lecture du tag RFID, il est possible d'avoir l'erreur ci dessous :

System.Reflection.TargetInvocationException: 'Exception has been thrown by the target of an invocation.'

Cette erreur n'est pas très explicite. Pour connaitre l'origine exacte de l'erreur, il faut activer l'option Exception Settings dans Visual Studio.
Pour cela : Menu Déboguer -> Fenêtres -> Paramètres d'exeption -> Common Language Runtime Exeptions

En relançant l'application en mode débug, vous aurez l'origine du problème.

Java.Lang.RuntimeException: 'Only the original thread that created a view hierarchy can touch its views.'

L'explication (d'après ChatGPT) :
Lors de la communication Bluetooth, les données sont souvent reçues sur un thread d'arrière-plan pour ne pas bloquer l'interface utilisateur. Ensuite, toute modification de l'UI doit être explicitement renvoyée au thread principal via une méthode comme Device.BeginInvokeOnMainThread.

Dans mon cas, je voulais réactiver le bouton Valider. j'ai donc corrigé mon code, comme ceci :

Device.BeginInvokeOnMainThread(() =>
{
    ((Command)ValideCommand).ChangeCanExecute();
});