Посмотрите на этот пример Plnkr
Переменная this
сильно отличается timesCalled
с каждым нажатием кнопки увеличивается только на 1. Ответ на мой личный вопрос:
.click( () => { } )
и
.click(function() { })
создают одинаковое количество функции при использовании в цикле, как вы можете видеть из подсчета Guid в Plnkr.
Согласно C# 3.0 вкратце , это - одна из нескольких ситуаций, где он должен хорошо звонить, Приостанавливают/Возобновляют.
Я думаю, что, если Вы хотите сделать это без сотрудничества целевого потока (такой как при наличии его называют метод, который блокирует его на Семафоре или чем-то, в то время как Ваш поток делает stacktrace) необходимо будет использовать API устаревшие.
А возможная альтернатива является использованием основанный на COM интерфейс ICorDebug, который используют отладчики.NET. Кодовая база MDbg могла бы дать Вам запуск:
Это старая тема, но я просто хотел предупредить о предлагаемом решении: решение Suspend and Resume не работает — я только что столкнулся с тупиковой ситуацией в своем коде, пытаясь выполнить последовательность Suspend/StackTrace/Resume.
Проблема в том, что конструктор StackTrace выполняет преобразования RuntimeMethodHandle -> MethodBase, и это изменяет внутренний MethodInfoCache, который блокируется. Взаимная блокировка возникла из-за того, что проверяемый мной поток также выполнял рефлексию и удерживал эту блокировку.
Жаль, что приостановка/возобновление работы не выполняется внутри конструктора StackTrace — тогда эту проблему можно было бы легко обойти.