Можно ли перечислять все управляемые потоки в С#? Visual Studio, похоже, может это сделать, когда вы нажимаете точку прерывания во время отладки. В окне "Threads" отображается список всех запущенных потоков, включая управляемые имена. Кто-нибудь знает, как это делается?
Как я могу перечислить все управляемые потоки в С#?
Ответ 1
Отладчики часто могут делать что-то "нормальный" код не может. Вероятно, вы обнаружите, что можете сделать это, если используете API профилирования/отладки, но я не думаю, что вы можете сделать это из "нормального".NET-кода.
Ответ 2
Это звучит как дубликат "Как перечислять потоки в .NET с использованием свойства Name?" Если да, то короткий ответ - "отслеживать ваши собственные потоки самостоятельно", то есть в List<Thread>
или аналогичном.
Ответ 3
Посмотрите Управляемый стековый проводник:
MSE работает, быстро присоединяясь к процесс, когда трассировка стека запросил и отделил второй трассировка стека была восстановлена. Таким образом, вмешательство в нормальная работа процесса сведено к минимуму.
К сожалению, это означает, что имеет выполняемый внешним процессом.
Аналогичным инструментом является StackDump, в котором используется MDbg для создания дампа.