I am working on a background program that will be running for a long time, and I have a external logging program (SmartInspect) that I want to feed with some values periodic
You can also use System.Diagnostics.Process.TotalProcessorTime and System.Diagnostics.ProcessThread.TotalProcessorTime properties to calculate your processor usage as this article describes.