如果我在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()
}
编写此代码会产生什么后果吗?
答案 0 :(得分:6)
是的,它是安全的,因为线程将一直持续到完成为止,你不需要引用Thread
对象来保持它活着,线程的行为也不会改变方式。
你唯一放弃的是后来加入线程或检查其状态的能力,但绝对安全地触发并忘记线程。
但是,如果您触发并忘记将线程设置为后台线程,则在线程完成之前程序退出时,该线程可能无法运行完毕。
答案 1 :(得分:4)
是的,你绝对可以点击并忘记一个帖子,而不会调用Join
。不会有任何错误的后果。如果它是一个后台线程,并且该进程在线程执行完毕之前终止,那么无论如何都会将其关闭。
答案 2 :(得分:4)