Sleep(1000) — эта строчка не понравилась. Нехорошо наверное тормозить рабочий поток надолго. Система может "заподозрить" неладное и прибить его например. Для проверки поставтье еще один printf после слипа....
Можно также укзать флажок WT_EXECUTELONGFUNCTION в QueueUserWorkItem