Ответ 1
Попробуйте выполнить
if ( System.Diagnostics.Debugger.IsAttached ) {
...
}
Есть ли способ обнаружить, что отладчик работает в памяти?
и здесь появляется псевдокод Form Load.
if debugger.IsRunning then
Application.exit
end if
Изменить: Оригинальное название: "Обнаружение отладчика в памяти"
Попробуйте выполнить
if ( System.Diagnostics.Debugger.IsAttached ) {
...
}
Прежде чем использовать это, нужно закрыть две вещи, чтобы закрыть приложение, запущенное в отладчике:
Теперь, чтобы быть более полезным, здесь, как использовать это обнаружение, чтобы 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;
}
}