【问题标题】:Claim resources/memory from thread single threaded apartment thread从线程单线程单元线程中声明资源/内存
【发布时间】:2009-04-16 16:40:18
【问题描述】:

我正在使用以下单线程公寓。 我无法从线程对象中回收内存/其他资源。 Actullay 我想将我的线程包裹在 try catch 和 fianlly 块中。 try 和 catch 完成了。但我不确定 finally 块。 我需要在 finally 块中调用什么代码、属性或函数。

System.Threading.Thread myThread = null;
    try 
    {
        myThread = new System.Threading.Thread(functionAddressETC)
        myThread .SetApartmentState(System.Threading.ApartmentState.STA);
        myThread .Start();
        myThread .Join();
    }
catch(Exception ex)
{}
finally
{
   // I need help in finally block. I need to reclaim all my resources
   //what function do i need to call here??????
}

【问题讨论】:

  • 你指的是什么资源?线程的底层句柄和栈或者线程分配的资源?

标签: c# multithreading try-catch-finally


【解决方案1】:

GC 将回收内存,终结器将释放本机资源。确保这些过程发生的唯一方法是确保不再引用您不再需要的对象。

一个线程除了它的堆栈之外没有任何它自己的内存/资源,这将通过关闭线程的连接来清理(除非你有一些东西弄乱了复制本机线程句柄:在这种情况下,当最后一个句柄已关闭)。

【讨论】:

  • 你的意思是我需要检查 finally 块中的以下代码。 finally { if (myThread != null) //发布代码 //但是我需要在这里调用什么函数???? }
  • 你不需要做任何事情来清理线程本身。您可能需要清理线程进程中分配的所有非托管资源。
  • @Syed:加入就是你所需要的。
猜你喜欢
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
  • 2014-05-29
  • 2012-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多