我刚刚开始使用C#。我正在运行一个对象的函数作为一个线程(新的线程(myFunc).Start())。
当函数完成时,线程是否会自行终止,还是我必须手动删除它?如果我必须,最好的方法是什么(我可能不知道什么时候完成等)?
感谢名单!
答案 0 :(得分:7)
是的,当函数返回时,线程将退出。如果它是一个长时间运行的任务,并且您希望在程序退出之前确定它已完成,则可以使用Thread.Join来阻止主线程,直到另一个线程完成。
答案 1 :(得分:2)
线程持续其功能的持续时间;函数完成后,线程将自动死亡。
但是,如果你想在后台执行一个相对较快的功能,最好使用ThreadPool而不是为它启动一个新线程。通过使用ThreadPool,您将重用一组由.Net框架自动维护的线程,并且您将避免创建新线程的开销。
例如:
ThreadPool.QueueUserWorkItem(delegate { myFunc(); });