如何在主线程中运行GC - C#?

时间:2014-05-12 09:18:14

标签: c# multithreading garbage-collection dispose

我有:

public static Thread MainThread
{
    get { return Thread.CurrentThread; }
}

在我的" main"类

我想在其他课程中做以下事情:

~Class()
{
    Program.MainThread.Start(this.Dispose(false));
}

如何在某个线程中运行方法?如何在主线程中运行GC?

3 个答案:

答案 0 :(得分:1)

  

如何在主线程中运行CG?

GC始终在其自己的线程中运行。

  

如何在某个线程中运行方法?

除非另一个线程有一个等待处理事情的API入口点,否则你不能这样做(比如UI可以调用到消息泵中)。

答案 1 :(得分:0)

您无法远程在线程中运行方法。 至于GC,它可以工作异步,它将在不同的线程中运行。

答案 2 :(得分:0)

您无法告诉垃圾收集器何时完成对象或最终确定对象的线程。

您可以通过致电GC.Collect告诉垃圾收集者现在是收集的好时机。

当直接调用IDisposable.Dispose时,您可以通过调用fully and properly implements IDisposable告诉垃圾收集器GC.SuppressFinalize不需要最终确定的对象。

再次,你无法控制,除了抑制,或在什么线程上运行对象终结器。

你的Finalizer /析构函数和protected Dispose(bool disposing)实现必须知道这个限制并适当地处理跨线程和空检查。