If I set it back to Sleep(0) and then change Sleep(100) to Sleep(1000) in IsBackgroundThread() I get a spike of up to 3-5% (22-33% of a core) every few seconds and then it drops back to nothing.
IsShutdownThreads only appears to return true at TheIDE exit and the for loop at the end seems to be executing once every second.