我应该杀死作为线程运行的函数(.Net)

时间:2009-11-15 14:11:06

标签: c# multithreading function

我刚刚开始使用C#。我正在运行一个对象的函数作为一个线程(新的线程(myFunc).Start())。

当函数完成时,线程是否会自行终止,还是我必须手动删除它?如果我必须,最好的方法是什么(我可能不知道什么时候完成等)?

感谢名单!

2 个答案:

答案 0 :(得分:7)

是的,当函数返回时,线程将退出。如果它是一个长时间运行的任务,并且您希望在程序退出之前确定它已完成,则可以使用Thread.Join来阻止主线程,直到另一个线程完成。

答案 1 :(得分:2)

线程持续其功能的持续时间;函数完成后,线程将自动死亡。

但是,如果你想在后台执行一个相对较快的功能,最好使用ThreadPool而不是为它启动一个新线程。通过使用ThreadPool,您将重用一组由.Net框架自动维护的线程,并且您将避免创建新线程的开销。

例如:

ThreadPool.QueueUserWorkItem(delegate { myFunc(); });