关于线程的两个问题:1.开的线程太多,CPU占用率太高,可否用线程池优化 2.退出程序时退出线程有没有必要等到线程的IsAlive为false再退出
1. 程序中开了6,7个线程,运行的时候CPU占用率达到60%-70%,太高了,影响性能,用线程池可否优化。线程池我还没用过,大概知道这个名词。
2. 在退出程序的时候在Form_closing()方法中,让线程都终止,用的是让标志变量为fasle,当然没用Abort方法,有没有必要等到线程的IsAlive状态为false的时候再退出,程序中我是加了循环等待到IsAlive的状态为false再退出程序,但是这样会造成退出很慢,有时候还会出现死循环,线程的IsAlive迟迟不为false。起初这样做的原因是怕不等到线程彻底结束,造成不安全因素。
还有我还试过,用标志变量让线程终止,等待线程的IsAlive状态为false后,线程就无法再开启,报ThreadStateException,IsAlive状态值始终为false。
if (threadJoyStickMaxon != null)
{
while (threadJoyStickMaxon.IsAlive)
{
Thread.Sleep(1);
}
threadJoyStickMaxon = null;
}
threadJoyStickMaxon = new Thread(new ThreadStart(ManageThreadJoystickMaxon));
threadJoyStickMaxon.Start();