| 对象池避免多个线程访问到同一个对象,避免一个进程内出现了多个对象。 
 例如:     private void btnRandomStart_Click(object sender, RoutedEventArgs e)
 {
 Thread thread = ThreadSessionFactory.GetCurrentThreadSession(StartRandom);   //从对象池获取对象,确定对象在线程内唯一
 ---------------------------------------------
 这里如果改为Thread thread = new Thread(StartRandom);
 你分析一下,我点一下这个按钮,让他开始执行,他就创建了一个对象,然后thread.Start()。
 再点一下,我就让他停止执行,  那么他又创建了一个对象,这个新对象没有初始化也没有状态,那么它就又执行了thread.Start()
 是不是这个线程就又创建了一个线程...  它每次都是创建一个新的对象,所以不能把当前线程的thread给停止掉
 
 如果使用了对象池,那么我再次点击的时候,它拿到的是上次点击时候创建的对象,然后继续对那个对象进行操作
 -----------------------------------------------
 if (isStart == false)
 {
 isStart = true;
 if (thread.ThreadState == ThreadState.Suspended)      //判断thread的状态
 {
 thread.Resume();       //继续已挂起的线程
 }
 else
 {
 lock (thread)
 {
 thread.Start();      //启动这个线程
 }
 }
 //thread.Start();
 this.btnRandomStart.Content = "停止";
 }
 else
 {
 isStart = false;
 //thread.Abort();
 lock (thread)
 {
 thread.Suspend();    //挂起线程
 }
 this.btnRandomStart.Content = "开始随机点名";
 }
 |