如果我在3秒内没有收到回复,我需要一种杀死此线程的方法。
实现这一目标的最佳方法是什么?它不一定是thread / threadstart,这就是我到目前为止所使用的。
答案 0 :(得分:13)
杀死一个帖子总是一个坏主意,应该保留给那些你已经在处理你将要杀死的病态进程的场景。你是否拥有线程中的代码?如果设置了标志,可能会进行一些状态检查并彻底退出?
如果没有,并且您需要在中止后使用代码,则单独的进程可能比线程启动更安全。至少你不会削弱你的自己的代码(例如,未发布的锁或挂起的静态构造函数/类型初始化程序)。
答案 1 :(得分:5)
你可以调用myThread.Abort,这会(通常)杀死线程,但这通常是一个非常糟糕的主意。
将堕胎逻辑放入线程本身通常是更好的选择。如果线程无法在3秒的时间段内处理其工作,则它可以中止并返回适当的状态。这是一个更安全的操作,从长远来看将更易于维护。
答案 2 :(得分:1)
使用IAsyncResult.AsyncWaitHandle.WaitOne()方法查看此SO-solution
答案 3 :(得分:0)
Thread.Join方法应该有一个TimeSpan参数,使其退出...
寻找TimeSpan and other synchronization methods on this page。