gpt4 book ai didi

c# - 如果对象设置为 null,线程是否会被释放

转载 作者:行者123 更新时间:2023-11-30 19:52:18 25 4
gpt4 key购买 nike

我有一个ClassA类

public class ClassA
{
public ClassA()
{
Thread t = new Thread(EndlessLoop);
t.IsBackground = True;
t.Start();
}

private void EndlessLoop()
{
while (True)
{
// do something
}
}
}

我不确定如果我将 ClassA 对象设置为 null 是否会释放线程

ClassA a = new ClassA();

# will the thread exit ?
a = null;

或者我应该实现 IDisposable,然后手动调用它?

最佳答案

一旦启动,线程将在例程结束(或调用 Thread.Abort 或程序退出)后终止。 Thread 类没有实现 IDisposable,因此没有要调用的 Dispose 方法。要终止长时间运行的线程,您可以设置线程定期检查的标志。

Thread 对象一旦超出范围且不再被引用,就有资格被垃圾回收。但是,生成的线程将继续运行。

关于c# - 如果对象设置为 null,线程是否会被释放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59205418/

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