此解决方案可以运作吗? Is there a way to indefinitely pause a thread
此解决方案是否释放了资源?
答案 0 :(得分:2)
简而言之,没有。停止线程正在执行并释放正在使用的任何资源的唯一方法是中止它(Thread.Abort method)。
答案 1 :(得分:0)
除非此问题还有很多,否则只需在“无限期”暂停时结束线程,并在暂停后创建一个新线程。当线程没有运行时,只释放所有有意义的可恢复数据/资源(如果可能的话,从线程本身内部)。花点时间提出 clear 生命周期和资源所有权模型。通常,让线程“合作”并管理自己的资源生命周期。
常规的创建/启动/解冻/工作/冻结/停止阶段是许多长时间运行和/或可暂停的作业(如SharePoint计时器,Windows工作流任务或SQL Server代理)的基础。请注意,上面的列表中没有“无限期暂停”阶段 - 这只是创建和开始(或停止和下一次启动)之间的空间,通常是外部事件进入系统的位置。