I think it is because you always create a new CWorkThread instance inside TimerShot() function and you never delete old instance.