C#:任何暂停线程进程的方法,即释放该线程使用的资源

时间:2011-01-13 03:32:41

标签: .net multithreading process resources

此解决方案可以运作吗? Is there a way to indefinitely pause a thread

此解决方案是否释放了资源?

2 个答案:

答案 0 :(得分:2)

简而言之,没有。停止线程正在执行并释放正在使用的任何资源的唯一方法是中止它(Thread.Abort method)。

答案 1 :(得分:0)

除非此问题还有很多,否则只需在“无限期”暂停时结束线程,并在暂停后创建一个新线程。当线程没有运行时,只释放所有有意义的可恢复数据/资源(如果可能的话,从线程本身内部)。花点时间提出 clear 生命周期和资源所有权模型。通常,让线程“合作”并管理自己的资源生命周期。

常规的创建/启动/解冻/工作/冻结/停止阶段是许多长时间运行和/或可暂停的作业(如SharePoint计时器,Windows工作流任务或SQL Server代理)的基础。请注意,上面的列表中没有“无限期暂停”阶段 - 这只是创建和开始(或停止和下一次启动)之间的空间,通常是外部事件进入系统的位置。