I would try to distinguish operations which are really CPU intensive from operations which are not in the thread CPU usage.
Not CPU intensive operations could include :
- Thread.Sleep() calls
- WaitForSingleObject like calls
- non managed select() calls
- part of the Windows Forms message loop ?
And all calls which do not really use CPU.
I'll try to post more about this (including how to define the CPU intensive operations, possibly by the user if it's to difficult to guess them).