Ne peut pas évaluer l'expression, car un thread est arrêté à un point où la collecte des ordures est impossible
Voici l'erreur
Ne peut pas évaluer l'expression, car un thread est arrêté à un point où la collecte des ordures est impossible, peut-être parce que le code est optimisé.
Je suis en train d'écrire une application console simple et la première ligne de code est: est-ce
List<MyObjectModel> list = MyObjectModel.GetNonCompletedReturns();
et le code de la fonction est:
public static List<MyObjectModel> GetNonCompletedReturns()
{
MyObject service = new MyObject();
List<MyObject> entities =
(from recs in service.Retrieve() where select recs).ToList();
List<MyObjectModel> models = new List<MyObjectModel>();
foreach (MyObject entity in entities)
{
models.Add(BindModel(entity));
}
return models;
}
et si j'essaie de parcourir le code, dès que je serai de retour à la principale de mon application et placez le pointeur sur la liste, j'obtiens le message d'erreur que j'ai montré.
Peut aider quelqu'un?
- Pourquoi est-ce tagged as asp.net?
- Double Possible de Que signifie "Ne peut pas évaluer l'expression, car le code de la méthode actuelle est optimisé." signifie?
Vous devez vous connecter pour publier un commentaire.
Cette erreur se déclenche uniquement lorsque vous essayez d'utiliser
Watch
dialogue au cours de débogage.Essayez d'utiliser une autre technique pour les variables de sortie, comme
Debug.WriteLine
,Console.WriteLine
et ainsi de suite.Si votre projet est compilé en release (avec les optimisations activée), vous pouvez voir ce. Avez-vous essayé la configuration DEBUG?
Aucune réponse n'a résolu mon problème donc je poste la solution qui m'ont aidé.
"Si il y a trop de données dans les paramètres puis cette erreur peut survenir,
une solution simple est de faire un objet, pas un struct parce que c'est un dataobject.
Placer cet objet dans vos paramètres au lieu de toutes les différentes variables,
normalement, le problème n'auront plus lieu."
Voici un petit truc, juste au cas où vous voulez examiner des objets et que vous n'êtes pas en mesure de modifier les paramètres:
J'ai créé un appel à un nouveau temporaire de fonction, à l'intérieur de la fonction de là où j'étais incapable de regarder mon objet. Puis, à l'intérieur de cette nouvelle fonction, j'ai pu regarder mon objet. Après le travail est terminé, il suffit de supprimer la fonction.
Si votre configuration de solution de Visual Studio est
Release
, passer àDebug
.Même s'il est vrai que la "Impossible d'évaluer l'expression, car un thread est arrêté à un point où la collecte des ordures est impossible, peut-être parce que le code est optimisé" erreur apparaît lorsque en mode release, la plupart des développeurs de s'assurer que leurs projets sont configurés pour compiler une version de débogage. MAIS pour être sûr que vous n'avez pas de presse-DLL questions, vous devez également vérifier les références pour les Dll qui sont dans votre solution et assurez-vous que vous n'avez pas de référence à une version release DLL. Si vous trouvez que c'est le cas, supprimez la référence de la DLL et ensuite ajouter une référence de projet plutôt que d'une DLL de référence. La référence de projet veillera à ce que votre solution références debug ou release versions de DLL, comme spécifié dans votre configuration de build.
Noter que les conseils ci-dessus s'applique, bien sûr, pour les Dll à qui vous avez le code source et qui sont construites à partir d'un projet dans votre solution.
J'ai eu cela aussi, quand j'ai frappé un
NullReferenceException
à partir d'un 3ème contrôle du parti.Dans ce cas, j'ai constaté que si j'ai mis un point d'arrêt avant j'ai frappé l'exception, je pourrais alors seule étape à travers le reste du code, sans voir le problème.
Aucune idée pourquoi, mais cela a fonctionné pour moi - dans ce cas au moins.
Pour ce que ça vaut, cette erreur peut aussi être causée par une boucle infinie dans une propriété de lecture (version simplifiée ci-dessous). Lorsque le débogueur tente d'évaluer la propriété (par exemple, dans la fenêtre d'observation) de l'INTERFACE utilisateur se bloque pendant quelques secondes, puis le message "Impossible d'évaluer l'expression..." erreur apparaîtra pour beaucoup d'autres propriétés dans la même classe.
Assurez-vous d'abord que vous êtes en cours d'exécution de votre code en mode de DÉBOGAGE et d'optimisation de code éteint. vous pouvez désactiver cette fonction à partir des propriétés de votre projet.
Si vous avez fait tous les ci-dessus et que le problème persiste, alors c'est probablement un problème avec la pile d'avoir
Debug.Break()
sur le dessus de cela. La solution est très simple, il suffit d'appuyerF10
pour passer à la ligne suivante et vous devriez être en mesure d'évaluer l'expression.Vous pouvez vérifier cette SORTE de question pour plus d'informations sur cette question.
J'éprouvais le même message d'erreur dans le débogueur Visual Studio lors de l'évaluation d'une expression linq.
Désactivation la VS débogueur paramètre de configuration 'Activer uniquement Mon Code' résolu le problème pour moi:
https://docs.microsoft.com/en-us/visualstudio/debugger/just-my-code