线程在多线程应用程序中被中止时的内存状态

时间:2016-02-17 10:55:58

标签: c# multithreading

如果它是一个多线程的应用程序,我没有找到关于线程正在使用的内存会发生什么情况的相关搜索命中。

会不会有内存泄漏?

另外,如果我没有在Thread.ResetAbort()子句中调用catch,则将异常ThreadAbortException抛出到外部catch和外部catch(如果有的话)...

感谢。

1 个答案:

答案 0 :(得分:0)

  • 线程不使用内存。进程有内存。线程在其父进程中运行。

  • 在C#中,对象分配的对象根据哪个线程分配它们没有区别。阅读垃圾收集。

  

另外,如果我没有在catch子句中调用Thread.ResetAbort()将异常   ThreadAbortException抛出到外部catch和外部catch如果有的话......

有一种称为文档的东西,这是一个非常简单的查找。让我引用你的话。我所做的只是在google中键入“ThreadAbortException”,这导致我

https://msdn.microsoft.com/en-us/library/system.threading.threadabortexception%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

现在引用:

  

当调用Abort方法来销毁一个线程时,   公共语言运行库抛出ThreadAbortException。   ThreadAbortException是一个可以捕获的特殊异常,但它   将在catch块结束时再次自动引发。什么时候   引发此异常,运行时执行所有finally块   在结束线程之前。因为线程可以做无界限   在finally块中计算或调用Thread.ResetAbort来取消   中止,无法保证线程永远不会结束。如果你   想要等到中止的线程结束,你可以调用   Thread.Join方法。加入是一个阻止调用,直到没有返回   线程实际上停止执行。

这样简单。它会在捕获结束时自动重新生成。