I have a fairly simple WCF service. Most of the service calls execute in 300ms or less. Load from these calls will be fairly light.
Once "reporting" call is a long-running (10 to 15 minute) call. It's CPU bound with IO occurring only in the first and last few milliseconds of the call. These reporting calls should be sequential.
During the "reporting" call, I want to poll the service for its progress. I had hoped that simply setup two ServiceHosts... one with ConcurrencyMode.Single for the long-running reporting and one with ConcurrencyMode.Multiple for the polling.
However, once the "reporting" call is running (with system CPU pegged near 100%), the polling status calls never make it to the service. I had hoped that the OS CPU scheduler would let the new requests have a piece of the CPU, but that's not what it looks like.
I had read on another SO question that the .NET ThreadPool may not spawn new threads under heavy CPU load. The "reporting" call goes out to a 3rd party DLL, so I don't have an obvious way to throttle that process back.
Any ideas on how to let the polling calls process in parallel with the long-running "reporting" call?
(I'm using netTcpBinding.)