所以我正在考虑一个类的实例,我希望线程在该类的生命周期内运行,但在调用该类的进程不再运行时终止。这不是父线程终止子线程的情况,而是单个旋转(可能在等待循环中)线程优雅退出而不持有资源等。
我认为在 C++ 中,您可以使用析构函数中的 volatile bool 来告诉线程终止,但是在 C# 中 ~ 不是析构函数,它是终结器。我无法使用终结器成功终止线程。也许我在那里遗漏了一些东西。我知道更好的做法是让所有线程在不发出终止信号的情况下自然死亡,但是每次我需要做某事时都生成一个线程并不是有效的。是的,我知道线程池,但我认为最好让单个侦听器线程响应对类的调用,并在将类放在 gc 上时让它优雅地死掉。
真正的诀窍是,我想,我能知道,或者我怎么知道运行线程的类何时首先放在 gc 上。IDisposable 是我要找的吗?我在这里没有使用任何非托管代码。