Yeah, you need to multithread applications to stop that from happening. I can't work on this right now, or during the day tomorrow, but if you can wait until over the weekend, I can write you a DLL that uses Microsoft Speech and would be multithreaded to avoid that problem. Let me know.
Also, let me know what other functions you want in the dll like "on" and "off" features and I'll see what I can do.