Dos cosas a tener en cuenta antes de usar este para cerrar una aplicación ejecutándose en el depurador:
- He utilizado un depurador para extraer CA. rash trace de una aplicación .NET comercial y enviarlo a la compañía donde se corrigió con un agradecimiento por facilitarlo y
- Ese cheque puede ser trivial derrotado.
Ahora, para ser más útil, aquí está la manera de utilizar esta detección para mantener func eval en el depurador de cambiar su estado del programa si tiene un caché de una propiedad evaluada perezosamente por razones de rendimiento.
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;
}
}
También he utilizado esta variante a veces para asegurar mi depurador paso a través de no omitir la evaluación:
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 mayoría de los depuradores se puede conectar a un proceso en tiempo de ejecución. En ese caso, verificar el depurador en statrup no ayudará mucho. –