正文

线程--定制线程及设置和获取线程的优先级别(示例下载) 2006-05-26 11:40:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/Csharpsky/14895.html

分享到:

(一).描述   此示例演示怎样定制一个线程,并且设置线程的主要属性和获取线程运行时的状态(二).代码    using System;using System.Threading;namespace 定制线程{ //委托声明(函数签名) //delegate string MyMethodDelegate(); class MyClass {    public static void Method1()  {   int i;   for(i=0;i<10;i++)   {    Console.WriteLine("Method1 at :" + i.ToString());        //当线程停止/失败或未启动时IsAlive值为:false,否则为:true;    Console.WriteLine("    IsAlive is " + Thread.CurrentThread.IsAlive.ToString()+" ");                        //是否是后台进程    Console.WriteLine("    IsBackGround is " + Thread.CurrentThread.IsBackground.ToString()+" ");            //线程名称    Console.WriteLine("    Name is " + Thread.CurrentThread.Name.ToString()+" ");            //优先级    Console.WriteLine("    Priority is " + Thread.CurrentThread.Priority.ToString()+" ");            //ThreadState值组合,有:启动/运行/等待/是否是后台线程等状态. 通过此属性来判断该线程是否完成任务.    Console.WriteLine("    ThreadState is " + Thread.CurrentThread.ThreadState.ToString()+"\n\n ");         DelayTime(1);  //延长时间,模拟执行任务   }  }  public static void Method2()  {   int i;   for(i=0;i<10;i++)   {    Console.Write("Method2 at :" + i.ToString());     //当线程停止/失败或未启动时IsAlive值为:false,否则为:true;    Console.WriteLine("    IsAlive is " + Thread.CurrentThread.IsAlive.ToString()+" ");                        //是否是后台进程    Console.WriteLine("    IsBackGround is " + Thread.CurrentThread.IsBackground.ToString()+" ");            //线程名称    Console.WriteLine("    Name is " + Thread.CurrentThread.Name.ToString()+" ");            //优先级    Console.WriteLine("    Priority is " + Thread.CurrentThread.Priority.ToString()+" ");            //ThreadState值组合,有:启动/运行/等待/是否是后台线程等状态. 通过此属性来判断该线程是否完成任务.    Console.WriteLine("    ThreadState is " + Thread.CurrentThread.ThreadState.ToString()+"\n\n ");                DelayTime(1);  //延长时间,模拟执行任务   }  }  private static void DelayTime(int n)  {   DateTime startTime = DateTime.Now;   while(startTime.AddSeconds(n) > DateTime.Now)   {    //延长时间,模拟实际中的进程   }  }   [STAThread]  static void Main(string[] args)  {           //   MyMethodDelegate d1 = new MyMethodDelegate(MyClass.Method1);//   MyMethodDelegate d2 = new MyMethodDelegate(MyClass.Method2);      Thread thread1 = new Thread(new ThreadStart(Method1));   thread1.Name = "A";   //给线程定义名称   //ThreadPriority枚举共五种优先级,由高->低依次为: Highest->AboveNormal->Normal->BelowNormal->Lowest   //优先级高的先优先执行,相同优先级的线程具有相同对CPU争夺权力   thread1.Priority = ThreadPriority.Highest;             Thread thread2 = new Thread(new ThreadStart(Method2));      thread2.Name = "B";   thread2.Priority = ThreadPriority.Normal;             thread1.Start();   thread2.Start();   Console.Read();  } }} 本示例代码已经测试,能够正常运行! (三).示例下载  http://www.cnblogs.com/Files/ChengKing/ThreadExample.rar  

阅读(2686) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册