Рома, если функция не находится в thread, то Sleep будет игнорироваться. То есть если сделаешь отдельный thread void f() для проигрывания, он и будет проигрываться с ожиданием.
Так сделай рандомную переменную и задавай в других функциях, а в UserSetControl просто используй её.
А чем он эти маркеры ищет?