Um programa C # pode medir seu próprio uso da CPU de alguma forma?

Estou trabalhando em um programa em segundo plano que estará em execução por um longo tempo e tenho um programa de log externo (SmartInspect) que desejo alimentar periodicamente com alguns valores, para monitorá-lo em tempo real durante a depuração.

Sei que posso simplesmente disparar vários programas, como o Gerenciador de Tarefas ou o IARSN TaskInfo, mas gostaria de manter tudo em meu próprio programa para isso, pois também quero adicionar algumas regras simples, como se o programa usasse mais do que CPU X%, sinalize isso no log.

Eu tenho um thread em segundo plano que alimenta periodicamente algumas estatísticas, ics para o SmartInspect, como consumo de memória, conjunto de trabalho etc.

É possível que esse segmento obtenha uma medida razoavelmente precisa de quanto dos recursos de CPU do computador consome? O programa principal é um aplicativo de thread único (além do thread de watchdog que registra estatísticas), portanto, se uma técnica estiver limitada aquanto um único thread usa então isso seria bom também.

Encontrei algumas entradas relacionadas a algo chamadoconfusão para Linux e C. Existe algo semelhante que eu possa usar para isso?

Editar: Ok, eu tentei o contador de desempenho, mas ele adicionava muitos dados do GC cada vez que era chamado, então o gráfico para uso da memória e coleta de lixo disparou. Acho que vou deixar essa parte de fora por enquanto.

questionAnswers(5)

yourAnswerToTheQuestion