我是这样想的。
主线程要有一个定时器,定时查询各个线程是否超时,比如1秒查询一次。
定义一个结构体,里面有两个成员。
一个是线程开始的时刻,这个可以在建立线程的时候用API-GetTickCount得到,是开机以来的毫秒数。
另一个是线程的HANDLE,这个也可以在建立线程的时候可以得到。
这个结构体要作为一个参数传给线程,然后把它加到一个List里面。
然后分两种情况,一是线程正常结束,这时线程应该给主线程发一个消息通知,并且这个通知包含了刚才传进来的结构体参数,主线程得到通知后就在List里面删除相应的结构体,这个List有方法可以实现。
另一种情况是线程死在某个地方了,那就只能强行杀死了。这里就要用到定时器了,在定时器事件里用GetTickCount得到当前时间,然后和List里面的每个线程的开始时间相减,如果结果大于你预设的超时值,
那就说明那个线程超时了,直接TerminateThread相应的句柄就行了。会有内存泄漏,但是没办法了。同时别忘了删除List里的相应项。
这样就应该可以了。