如果我在C#中启动一个新线程,我可以解雇并忘记,而不必担心线程被加入吗?
void DoSomething()
{
var worker = new Worker();
var start = new ThreadStart(worker.DoStuff);
var thread = new Thread(start);
thread.Start();
// do something else...
// who knows how long it'll take...
// exit without calling thread.Join()
}
Run Code Online (Sandbox Code Playgroud)
编写此代码会有后果吗?
是的,它是安全的,因为线程将继续直到完成它自己,你不需要引用Thread对象来保持它活着,线程的行为也不会以任何方式改变.
你唯一放弃的是能够在以后加入线程,或检查它的状态,但是激活和忘记线程是绝对安全的.
但是,如果您触发并忘记将线程设置为后台线程,则在线程完成之前程序退出时,该线程可能无法运行完成.