gpt4 book ai didi

.net - 如何识别GC Finalizer线程?

转载 作者:行者123 更新时间:2023-12-04 09:57:17 25 4
gpt4 key购买 nike

我有一个 .NET (C#) 多线程应用程序,我想知道某个方法是否在 Finalizer 线程内运行。

我试过使用 Thread.CurrentThread.Name 但它不起作用(返回 null)。

任何人都知道如何查询当前线程以发现它是否是 Finalizer 线程?

最佳答案

识别线程的最佳方法是通过其托管 id:

Thread.CurrentThread.ManagedThreadId;

由于终结器始终在 GC 的线程中运行,因此您可以创建一个终结器,将线程 ID(或线程对象)保存在静态变量中。

样本:
public class ThreadTest {
public static Thread GCThread;

~ThreadTest() {
ThreadTest.GCThread = Thread.CurrentThread;
}
}

在您的代码中,只需创建此类的一个实例并进行垃圾收集:
public static void Main() {
ThreadTest test = new ThreadTest();
test = null;
GC.Collect();
GC.WaitForPendingFinalizers();

Console.WriteLine(ThreadTest.GCThread.ManagedThreadID);
}

关于.net - 如何识别GC Finalizer线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/318462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com