我碰到一个问题,即使线程在后台运行时,如果while(true)循环没有在主方法中运行(没有线程),应用程序仍会关闭。只有线程的控制台关闭?
伪例如:
public static void Method1() {
while(true) {}
}
public static void Method2() {
while(true) {}
}
public static void main() {
Thread myThread1 = new Thread(() => Method1());
Thread myThread2 = new Thread(() => Method2());
myThread1.Start();
myThread2.Start();
}
现在,程序运行时,启动线程后停止执行,即使正在运行的线程while循环无限。我如何使这个失效?我知道我可以在主要方法中添加一个无限循环,但这看起来很奇怪。
有人建议我使用互斥锁或semaphone,但是我现在不会从哪里开始,或者如何将它们应用到我的应用程序。
陌生,它不会退出我。 –
或者您可以使用TPL并对您生成的任务执行[WaitAll()](http://msdn.microsoft.com/en-us/library/dd270695%28v=vs.110%29.aspx)。 – slugster
你为线程设置了'IsBackground = true'吗? –