I have the following code that throws an exception:
ThreadPool.QueueUserWorkItem(state => action());
When the action throws an exception
If you have access to action's source code, insert a try/catch block in that method; otherwise, create a new tryAction method which wraps the call to action in a try/catch block.
action
tryAction