Ответ 1
Если хотите, можете включить это в директиву #if DEBUG
или вы можете использовать System.Diagnostic.Debugger.IsAttached
.
Итак, я настраиваю System.Timers.Timer
и имею обработчик для события Elapsed
. Он работает так, как ожидалось.
Однако, если я хочу отлаживать код, который вызывается в обработчике с истекшим временем; таймер будет продолжать генерировать дополнительные события. Таким образом, я не могу сделать один шаг через код, потому что события таймера складываются друг на друга.
Текущее обходное решение - вызывать Stop
на таймере при входе в обработчик и Start
при выходе. Однако это не значит, что система должна работать так, что это временное решение. Мне было интересно, есть ли способ настроить отладчик для остановки таймера во время отладки.
Если хотите, можете включить это в директиву #if DEBUG
или вы можете использовать System.Diagnostic.Debugger.IsAttached
.
В вашем обработчике событий Timer.Elapsed
, возможно, вы можете использовать некоторые директивы препроцессора для включения кода, который останавливает и запускает (или отключает и включает) таймер:
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
#if DEBUG
(source as Timer).Stop();
// or
(source as Timer).Enabled = false;
#endif
// do your work
#if DEBUG
(source as Timer).Start();
// or
(source as Timer).Enabled = true;
#endif
}