1. 线程的创建
创建Thread实例,并传入ThreadStrat委托-还可以配置线程,如是否为后台线程
调用Thread.Start方法,还可以传参
2. 线程的终止
调用Thread.Join方法,等待线程的结束,这个情况下我们主线程会被阻塞,直到子线程结束,然后我们才能停止
调用Thread.Interrupt方法,中断线程的执行,会在相应线程中抛出ThreadInterruptedException(如果线程中包含一个while()循环,那么需要保证包含等待方法,如IO操作,Thread.Sleep等)
C#
var th = new Thread((obj) =>
{
try
{
for (int i = 0; i < 20; i++)
{
Thread.Sleep(200);
Console.WriteLine("线程启动");
}
Console.WriteLine("线程结束");
}
catch (ThreadInterruptedException)
{
}
finally
{
Console.WriteLine("在主线程,等待线程结束");
}
})
{
IsBackground = true,
Priority = ThreadPriority.Normal
};
th.Start("我看怎么个事儿");
Thread.Sleep(1000);
th.Interrupt();
th.Join();
Console.WriteLine("Done");
3.线程的挂起与恢复
Thread.Suspend以及Thread.Resume
较新版本的.NET中,这两个方法已经被标记Obsolete过时的,且调用会报错
推荐使用锁、信号量等方式实现这一逻辑