If it were me, I'd use perfmon. The advantages are:
- Well known data archiving model that offers multiple formats.
- Existing tooling to slice and dice the data, including visualization.
- Integrates with other systems if the client cares (ie lets them suck the data in to other performance tooling).
- Someone else's code. :)
You can wrap perfmon and invoke it programatically if you want. Worst case just invoke it via the command line and start/stop collection that way.
Of course you can also expose your own performance counters for app specific stuff too. There are loads of APIs for this for just about every programming environment I can think of on Windows, including of course C#.