一、Thread.Name 属性
获取或设置线程的名称。
语法格式如下:
public string Name { get; set; }
using System;
using System.Threading;
class Test
{
static void Main()
{
Thread Nt1 = new Thread(new ThreadStart(Work.DoWork));
if (Thread.CurrentThread.Name == null)
{
Thread.CurrentThread.Name = "MainThread";
}
else
{
Console.WriteLine("Unable to name a previously " + "named thread.");
}
Nt1.Start();
}
}
class Work
{
public static void DoWork()
{
Console.WriteLine("新的线程启动(静态方法)");
}
}
二、Thread.CurrentThread 属性
获取当前正在运行的线程。
public static System.Threading.Thread CurrentThread { get; }
三、线程的优先级
线程的优先级指定一个线程相对于另一个线程的相对优先级,每个线程都有一个分配的优先级。在公共语言运行库内创建的线程最初被分配为Normal优先级,而在公共语言运行库快创建的线程,在进入公共语言运行库时将保留其先前的优先级。
线程是根据其优先级而调度执行的,用于确定线程执行顺序的调度算法随操作系统的不同而不同。只要具有较高优先级的线程可以执行,具有较低优先级的线程就不会执行,直到在高优先级的程序不再有可执行的线程时,才会移动到下一个较低的优先级,并在该优先级上调度线程以执行。除此之外,当应用程序的用户界面在前台和后台之间切换时,操作系统可以动态调整线程的优先级。
线程的优先级可以通过Thread类的Priority属性设置,获取或设置指示线程的调度优先级的值。Priority属性是一个ThreadPriority型枚举,列举了5个优先等级:AboveNormal、BelowNormal、Highest、Lowest、Normal。
public System.Threading.ThreadPriority Priority { get; set; }
public ThreadPriority Priority{get;set;}
普通线程的优先级默认为Normal;
- Highest:在具有任何其他优先级的线程之前,优先级最高。
- AboveNormal:可以将Thread安排在具有Highest优先级线程之后,在Normal之前。
- Normal:在AboveNormal之后,BelowNormal之前。默认值
- BelowNormal:在Normal之后,Lowest之前。
- Lowest:优先级最低。
可以通过调用线程的Priority属性来获取和设置其优先级。Priority属性用来获取或设置一个值,该值指示线程的调度优先级。
using System;
using System.Threading;
class Test
{
static void Main()
{
Thread Nt1 = new Thread(new ThreadStart(Work.DoWork1));
Nt1.Priority = ThreadPriority.Lowest;
Nt1.Start();
Thread Nt2 = new Thread(new ThreadStart(Work.DoWork2));
Nt2.Priority = ThreadPriority.Highest; ;
Nt2.Start();
}
}
class Work
{
public static void DoWork1()
{
Console.WriteLine("1111111111");
}
public static void DoWork2()
{
Console.WriteLine("2222222222");
}
}