Althought its specific to your software, you should
probably manage this from within the thread. Terminating
threads from outside can lead to leaked resources - even
in .Net where, for example you may have native handles
that require proper cleanup, or calls to make to IDispose
within .Net.
Perhaps you would set a time-to-live (TTL) value for your
thread before invoking it, and have the thread check and
dispose/cleanup gracefully? I would not recommend that
you rely on Timers for this.
Of course the thread cannot guarantee to be millisecond
precise, but at least you can set limits.
HTH,
mk