yes the thread is started by the timer in the main thread: my question was if it was to be considered a good practice
I would consider it bad practice, probably even very bad practice.
The reason is, a timer shouldn't be allocating O/S resources because if it does, it is quite unclear what other part of the program is responsible for freeing those resources. A thread is usually created when some ad-hoc task needs to be accomplished, if the task repeats with the passage of time then, there should be a permanent piece of code in the program that takes of it and the timer can simply execute that piece of code or activate a mechanism in the program that queues the execution of the code (e.g, resume a thread that will check the queue and determines what has to be done.)
Creating a thread in a timer means that there could be dozens, if not more, of threads running and they'd have to end themselves. Creating threads is not as expensive as creating a process but, it is _not_ cheap. Code in timers should be low overhead, fast execution, otherwise they could end up stepping on their own toes.
Creating a thread in a timer is, at the very least, problematic.
HTH.