通过bool变量,相当于执行的开关,通过这个变量值,来控制线程,是否继续执行或终止?事例代码如下:
//通过参数化线程委托启动一个线程
ParameterizedThreadStart parameterizedThreadStart = new ParameterizedThreadStart(Worker.DoWork);
Thread thread = new Thread(parameterizedThreadStart);
thread.Start("Hello World!");
//终止一个线程,通过boolean变量来终止线程。
worker.RequestStop();
public class Worker
{
private volatile bool shouldStop;
// 当线程启动时,被调用。这个方法相当于主线程的Main入口
public void DoWorkByVariable()
{
while (!shouldStop)
{
Console.WriteLine("worker thread: working...");
}
Console.WriteLine("worker thread: terminating gracefully.");
}
public void RequestStop()
{
shouldStop = true;
}
}
通过Abort方法来终止线程。其实这个方法是通过抛出一个异常来终止线程。因此,不是优先实现终止线程的方式。事例代码如下:
//通过参数化线程委托启动一个线程
ParameterizedThreadStart parameterizedThreadStart = new ParameterizedThreadStart(Worker.DoWork);
Thread thread = new Thread(parameterizedThreadStart);
thread.Start("Hello World!");
//终止一个线程,通过抛出ThreadAbortException异常来终止线程.
newThread.Abort();
线程一般分为前台线程和后台线程。终止应用程序,必须要终止所有前台线程,至于后台线程可以不必强制终止。因此,应用程序终止后,所有后台线程终止会自动终止。设置后台线程只需设置IsBackgroud属性为true即可。
浙公网安备 33010602011771号