Потоки выполняются:
§ в обычном режиме (Foreground threads) и
§ в фоновом режиме (Background threads).
Состояние Background state распознаётся по значению свойства IsBackground, которое указывает на режим выполнения потока: background или foreground.
Любой Foreground поток можно перевести в фоновый режим, установив значение свойства IsBackground в true.
Завершение Background потока не влияет на завершение приложения в целом.
Завершение последнего Foreground потока приводит к завершению приложения, независимо от состояния потоков, выполняемых в фоновом режиме.
Ниже в примере один из потоков переводится в фоновый режим. Изменяя значения переменных, определяющих характеристики циклов, можно проследить за поведением потоков.
using System;
using System.Threading;
namespace ThreadApp_1
{
class Worker
{
int allTimes;
public Worker(int tKey)
{
allTimes = tKey;
}
// Тело рабочей функции...
public void DoItEasy()
{//====================================
int i;
for (i = 0; i < allTimes; i++)
{
Console.WriteLine(“Back thread >>>> {0}\r”,i);
}
Console.WriteLine(“\nBackground thread was here!”);
}//====================================
}
class StartClass
{
static void Main(string[] args)
{
long i;
Worker w0 = new Worker(100000);
ThreadStart t0;
t0 = new ThreadStart(w0.DoItEasy);
Thread th0;
th0 = new Thread(t0);
th0.IsBackground = true;
th0.Start();
for (i = 0; i < 100 ; i++)
{
Console.WriteLine(“Fore thread: {0}”, i);
}
Console.WriteLine(“Foreground thread ended”);
}
}
}