Подтвердить что ты не робот

Можно ли использовать API профилирования прямо с С#?

Я просто хочу использовать .NET Profiling API (ICorProfilerCallback и т.д.), но в то же время не хочу иметь дело с С++. Я некоторое время смотрел вокруг и не нашел никакого примера в С#, но С# + С++, где самая интересная часть написана с использованием С++.

4b9b3361

Ответ 1

Нет, вы не можете реализовать API профилирования CLR в управляемом коде (С# или иным образом), поскольку обратные вызовы профилирования вызываются в очень конкретные моменты времени, когда предполагается, что управляемая среда находится в определенном состоянии. Реализация ваших обратных вызовов в управляемом коде нарушила бы множество предположений.

Дэвид Броман, разработчик API профилирования CLR, сказал следующее:

Вам нужно написать свой профилировщик в C++. Профилировщик вызывается средой выполнения в очень деликатных точках во время выполнения профилированного приложения, и часто запускать управляемый код в этих точках крайне небезопасно.

Блог Дэвида - отличный ресурс для работы с API профилирования CLR.