I have what I assume is a pretty common threading scenario:
When you queue a work item in the thread queue, you should get a waithandle back. Put them all in an array and you can pass it as an argument to the WaitAll() function.
WaitAll()