Have you checked whether this TextToSpeech component has an event that gets triggered when it stops speaking?
Otherwise, perhaps it has a property that tells you whether it is busy speaking or not. In this case you might be able to keep your application in a while loop. This is not the best approach, I admit, as it'll effectively freeze the program until the speech is done, but it does save you from the complications of using its own thead...