c# – 在这种情况下主线程会发生什么
我有以下多线程程序:
class Program{ static void main(){ (new Thread(DoSomething)).Start(); } static void DoSomething(){ // Dome something here... } } 几个问题: >旋转子线程后主线程是否退出? 解决方法
通常,如果要等待子线程完成,则需要添加x.Join(); line(其中x是您的线程的变量),无论您希望主线程停止并等待子项完成.
编辑:是的,主要线程将退出,除非出现以下三种情况之一: b)您有一个等待线程完成的条件(例如我提到的Join语句,但还有其他方法). c)主线程进入半无限循环(例如游戏/图形引擎). 在您的简单示例中,它将确定退出(给出您的问题的参数,后台线程). 编辑2:对不起,我似乎已经回避了你的第二个问题(实际上只考虑了背景线程).如果它是一个后台线程,它将按照我的解释退出,如果它是前景,那么它不应该(虽然我对前景线程没有太多经验,所以我不能肯定地说). 所以回答你的问题:是的,主线程退出.是的,如果孩子特别是后台线程,那么该过程也会退出. 编辑3:最后编辑,我保证.我只想添加一些代码,以便您可以自己证明答案(这总是很好): static void Main(string[] args) { Thread thready = new Thread(DoSomething); thready.IsBackground = true; thready.Start(); } static void DoSomething() { while (true) { Console.Write("thread's looping n"); } } 通过切换thready.IsBackground = true;到thready.IsBackground = false;你得到一个永远运行的程序(直到线程没有退出).保持真实状态将很快退出. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |