You can use the Thread.Join method with an TimeSpan parameter, to set the
length of time the process will wait for a Thread to exit. You can then
handle what to do if the Thread does not exit by the end of the TimeSpan.
See: http://msdn2.microsoft.com/en-us/library/23f7b1ct.aspx
It's not clear exactly what you mean. You can call Thread.Join with a
timeout, but threads are generally independent - it doesn't really
make sense to think of a "general" timeout.
What he does when the Timeout occurs, and the process continues is not clear
to me, so I omitted any mention of it. He may or may not want to kill the
Thread, or do something else entirely. My point was that he can cause the
process to wait for an arbitrary time for the Thread to exit, and do
something afterwards, whatever his requirements may be.