Как получить трассировку стека нетокового потока?

Посмотрите на этот пример Plnkr

Переменная this сильно отличается timesCalled с каждым нажатием кнопки увеличивается только на 1. Ответ на мой личный вопрос:

.click( () => { } )

и

.click(function() { })

создают одинаковое количество функции при использовании в цикле, как вы можете видеть из подсчета Guid в Plnkr.

30
задан Gennady Vanin Геннадий Ванин 7 May 2013 в 06:16
поделиться

3 ответа

Согласно C# 3.0 вкратце , это - одна из нескольких ситуаций, где он должен хорошо звонить, Приостанавливают/Возобновляют.

11
ответ дан Brian Rasmussen 7 May 2013 в 17:16
поделиться
  • 1
    Это повреждается для ' сотня и six' попробовать. печать (text2int (" сотня и six")).. также печать (text2int (" thousand")) – Harish Kayarohanam 26 February 2017 в 08:43

Я думаю, что, если Вы хотите сделать это без сотрудничества целевого потока (такой как при наличии его называют метод, который блокирует его на Семафоре или чем-то, в то время как Ваш поток делает stacktrace) необходимо будет использовать API устаревшие.

А возможная альтернатива является использованием основанный на COM интерфейс ICorDebug, который используют отладчики.NET. Кодовая база MDbg могла бы дать Вам запуск:

2
ответ дан Michael Burr 7 May 2013 в 06:16
поделиться
  • 1
    Если пользователь дает цифру, поскольку входная программа возвратит ее в словах и наоборот например, 5-> пять и для Five-> 5.program работы для чисел ниже 100, но может быть расширен до любого диапазона только путем добавления немногих строк кода. – Shriram Jadhav 6 December 2017 в 06:45

Это старая тема, но я просто хотел предупредить о предлагаемом решении: решение Suspend and Resume не работает — я только что столкнулся с тупиковой ситуацией в своем коде, пытаясь выполнить последовательность Suspend/StackTrace/Resume.

Проблема в том, что конструктор StackTrace выполняет преобразования RuntimeMethodHandle -> MethodBase, и это изменяет внутренний MethodInfoCache, который блокируется. Взаимная блокировка возникла из-за того, что проверяемый мной поток также выполнял рефлексию и удерживал эту блокировку.

Жаль, что приостановка/возобновление работы не выполняется внутри конструктора StackTrace — тогда эту проблему можно было бы легко обойти.

16
ответ дан 27 November 2019 в 23:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: