Deux choses à garder à l'esprit avant d'utiliser cette touche pour fermer une application ouverte dans le débogueur:
- J'ai utilisé un débogueur pour tirer ca trace d'éruption à partir d'une application .NET commerciale et l'envoyer à la société où il a ensuite été fixé avec un merci de le rendre facile et
- Cette vérification peut être trivialement vaincu.
Maintenant, plus d'utilisation, voici comment utiliser cette détection pour être de garder func eval dans le débogueur de changer votre état de programme si vous avez un cache une propriété évaluée paresseusement pour des raisons de performance.
private object _calculatedProperty;
public object SomeCalculatedProperty
{
get
{
if (_calculatedProperty == null)
{
object property = /*calculate property*/;
if (System.Diagnostics.Debugger.IsAttached)
return property;
_calculatedProperty = property;
}
return _calculatedProperty;
}
}
J'ai aussi utilisé cette variante parfois pour assurer mon débogueur étape par ne saute pas l'évaluation:
private object _calculatedProperty;
public object SomeCalculatedProperty
{
get
{
bool debuggerAttached = System.Diagnostics.Debugger.IsAttached;
if (_calculatedProperty == null || debuggerAttached)
{
object property = /*calculate property*/;
if (debuggerAttached)
return property;
_calculatedProperty = property;
}
return _calculatedProperty;
}
}
La plupart des débogueurs peuvent être attachés à un processus en cours d'exécution. Dans ce cas, la vérification du débogueur sur statrup n'aidera pas beaucoup. –