专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » 正在中止线程:(七)线程--管理线程(使线程中止,暂停,挂起等) »正文

正在中止线程:(七)线程--管理线程(使线程中止,暂停,挂起等)

来源: 发布时间:星期四, 2009年2月12日 浏览:145次 评论:0


().描述
   此举例演示怎样设置线程状态(中止,暂停,挂起等)
( 2).代码
   using ;
using .Threading;

管理线程_使线程中止_暂停_挂起等_

 //委托声明(签名)
 delegate MyMethodDelegate;
  MyClass
 {  
  public void Method1
  {
   //thread1.Abort;句中 Abort会引发异常.Threading.ThreadAbortException,其异常作用下面会讲解   
   try
   {
     i;
    for(i=0;i<10;i)
    {
     Console.WriteLine(\"Method1 at :\" + i.);  
     DelayTime(1);  //延长时间(模拟执行任务)
    }
   }
   catch(.Threading.ThreadAbortException)
   {
    //注意线程跳出此语句块后才终止
    //这里可以写释放此进程占用资源代码,或者其它些操作比如: 在进程结束前将重要数据写回数据库中
    Console.WriteLine(\"进程1马上将被强制杀死!\"); 
    Thread.ReAbort;  //取消Abort操作,我在这里加这句没用反而出现异常了,读者如果知道请告诉我怎样写才对   
   }
  }
  public void Method2
  {
    i;
   for(i=0;i<10;i)
   {
    Console.WriteLine(\"Method2 at :\" + i.);  
    DelayTime(1);  //延长时间模拟执行任务
   }
  }
  
  private void DelayTime( n)
  {
   DateTime startTime = DateTime.Now;
   while(startTime.AddSeconds(n) > DateTime.Now)
   {
    //延长时间,模拟实际中进程
   }
  }

  [STAThread]
   void Main( args)
  {              
   Thread thread1 = Thread( ThreadStart(Method1));   
   Thread thread2 = Thread( ThreadStart(Method2));   
   thread1.Start;
   thread2.Start;
   thread1.Abort; //将线程强制终止(杀死)   
           
   //thread1.Join作用是无限制等待thread1终止后才执行下面语句起到和主线程同步作用.
   //原因是: thread1最终是被终止但是thread1个独立线程,它并不会马上被终止
   //什么时候用:就拿这里来举例吧当thread1占用着个资源当thread1终止后
   //thread2线程马上也要用此资源这就要求等待thread1彻底终止并释放后占用资源后,才能接着执行下
   //否则线程thread2会找不到此资源甚至会发生异常! 为了安全起见,般是要在Abort思路方法后面紧跟个Join思路方法.
   
   
            //thread1.Suspend;//此思路方法将线程无限制时间挂起,相当于无限制时间暂停线程
            //thread1.Resume; //将正在挂起进程继续执行
   
   //Thread.Sleep(1000);//暂停线程1秒钟以毫秒为单位暂停.
   
   //Thread.ReAbort;     //取消Abort操作
   //thread1.Interrupt; //中止线程现在处状态如果线程由运行转到休眠执行此句后会使线程重新返回到运行状态
           
   Console.Read;
  }
 }
}

本举例代码已经测试能够正常运行!




0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: