Две вещи, чтобы иметь в виду, прежде чем использовать это, чтобы закрыть работу приложения в отладчике:
- Я использовал отладчик, чтобы вытащить ac опрометчивая трассировка из коммерческого приложения .NET и отправка его в компанию, где впоследствии была исправлена благодарность за то, что вы сделали это легко, и
- Эта проверка может быть тривиально побеждена.
Теперь, чтобы быть больше пользы, вот как использовать это обнаружение держать func eval в отладчике от изменения вашего состояния программы, если у вас есть тайник, лениво оцененное свойство соображений производительности.
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;
}
}
Я также использовал этот вариант в разы, чтобы обеспечить мой отладчик пошаговую не пропустить оценку:
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;
}
}
Большинство отладчиков может быть присоединен к процессу во время выполнения. В этом случае проверка на отладчик на statrup не поможет. –