ich sag mal das "sleep" die falsche möglichkeit ist...
sleep müsste meines wissens das gesammte programm anhalten/einfrieren...
EDIT:
Vielleicht nimmst du die aktuelle zeit, speicherst sie in einer variablen und überprüfst mittels timer ob die gespeicherte zeit - aktuelle zeit >= 30 sec ist ^^