Yes, but the timer thread can be set up to check for certain conditions being managed by your other thread(s). Take for example the checking of the LastPing value that the watchdog performs in my basic example. If that value is not updated regularly by some other process, the watchdog class assumes something is wrong and reboots. You can get way more creative with inter-thread communications to make sure all the other threads are doing what they are supposed to; and when they are not; force a reboot.
There is nothing that says only the timer can update the watchdog either. You can also just have your main thread (or any thread for that matter) call the StartWatchdog method on a regular basis instead of a timer. Just make sure you implement proper locking mechanism to ensure thread-safe operations.
I have used this in a situation where I need to keep a persistent connection open on the network. If some condition prevents me from reconnecting, I can change the networking parameters and force a reboot to reconnect to try and resolve. It is nice to have the ability to reboot your ND on demand!