comment réparer “System.AggregateException” s’est produite dans mscorlib.dll “

Je reçois un tel problème dans le débogueur et le programme cesse de s’exécuter. Le débogueur ne me montre pas la ligne, donc je ne sais pas quoi réparer.

Une exception non gérée de type ‘System.AggregateException’ s’est produite dans mscorlib.dll

Informations supplémentaires: Les exceptions d’une tâche n’ont pas été observées en attente sur la tâche ou en accédant à sa propriété Exception. Par conséquent, l’exception non observée a été relancée par le thread du finaliseur.

Impossible d’obtenir la valeur de local ou de l’argument ” car il n’est pas disponible à ce pointeur d’instructions, peut-être parce qu’il a été optimisé. System.Threading.Tasks.TaskExceptionHolder

Comment résoudre mon problème?

J’ai aussi trouvé cette question qui est assez similaire Impossible d’obtenir la valeur de local ou de l’argument car il n’est pas disponible à ce pointeur d’instructions, peut-être parce qu’il a été optimisé

Comme le message l’indique, vous avez une tâche qui a généré une exception non gérée.

Activez Break on All Exceptions (Debug, Exceptions) et relancez le programme.
Cela vous montrera l’exception originale lorsqu’elle a été lancée en premier lieu.


(commentaire ajouté): Dans VS2015 (ou supérieur). Sélectionnez Déboguer> Options> Débogage> Général et désélectionnez l’option “Activer uniquement mon code”.

Vous pouvez gérer directement l’exception afin de ne pas planter votre programme (capture de l’exception AggregateException ). Vous pouvez également regarder l’exception interne, cela vous donnera une explication plus détaillée de ce qui a mal tourné:

 try { // your code } catch (AggregateException e) { } 

La réponse acceptée fonctionnera si vous pouvez facilement reproduire le problème. Toutefois, pour des raisons de pratique, vous devez détecter toutes les exceptions (et journalisations) exécutées dans une tâche. Sinon, votre application se bloquera si quelque chose d’inattendu se produit dans la tâche.

 Task.Factory.StartNew(x=> throw new Exception("I didn't account for this"); ) 

Cependant, si nous faisons cela, au moins l’application ne plante pas.

 Task.Factory.StartNew(x=> try { throw new Exception("I didn't account for this"); } catch(Exception ex) { //Log ex } ) 

Dans mon cas, j’ai couru sur ce problème en utilisant Edge.js – tout le problème était une erreur de syntaxe JavaScript dans une définition de fonction C # Edge.js.