20

使用类似下面的代码,创建的新线程会在函数返回后自行结束吗?

new Thread(() =>
{
    function();
}).Start();

我对线程很陌生,所以我想知道。

4

3 回答 3

15

没关系...如果担心在可执行文件退出之前线程可能无法完成,您可能想要:

new Thread(() =>
    {
        function();
    }){IsBackground = true}.Start();

后台线程不会阻止您的应用退出。

于 2013-03-17T15:39:30.703 回答
2

是的,线程将在函数完成后结束,但除非你有一个需要在函数内部使用的参数,否则我不会那样启动它;我会这样做:

new Thread(function).Start();
于 2013-03-17T15:33:55.433 回答
2

尽管管理线程被认为是最佳实践,但如果您对该特定线程的结果/状态不感兴趣并且不需要处理取消等问题,那么您的工作就可以了。

值得考虑的是你是否需要一个专门的线程来处理你正在做的事情。如果您正在运行的代码相对较小,您可能需要考虑通过TPLQueueUserWorkItem来使用 ThreadPool。

于 2013-03-17T15:40:22.710 回答