Sleep is never a good idea, really. Not even in a thread. What if the system shuts down and asks your application to close? It would have to wait 0.3 seconds for the thread.
Let's take Windows for example - if a process takes too long to shut down, it'll recognize the process as non-responsive. If you want to get any kind of certification from Windows, you'll fail right here.
That's why I recommended an event to signal the thread. Waiting for the signal is nearly as low on the CPU as sleep would be, but you can "break" the waiting time at any moment by triggering the event, so your shutdown reaction time is immediate.