I'm not a big fan of running a watchdog as a thread in the process you are watching. This means that for some reason the whole process freezes, the watchdog timer will not work.
Watchdogs is an idea taken from the hardware world, and they all worked out. Use an external circuit as simple as possible (so it can be convincingly correct). Typical watchdogs simply started the timer, and if the process did nothing before the timer expired (for example, accessing the memory where the watchdog was watching), it was all reset. When the watchdog has been kicked, it will restart the timer.
The act of starting the watchdog timer protected this process from final completion.
My advice would be to write a very simple standalone program that just kept track of the event (e.g. file update time). If this event does not occur within the required time, kill the observed process (and let Windows restart it).
Then your monitored program periodically overwrites this file.
source share