Свойство IsBackground
IsBackground задают до
Start.
По умолчанию новый Thread
не фоновый. Join всё равно
дожидается конца работы.
Фоновый поток не держит процесс,
если все обычные уже вышли.
Синтаксис
thread.IsBackground = true;
bool background = thread.IsBackground;
Пример
Давайте прочитать значение у нового потока:
using System;
using System.Threading;
class Program
{
static void Main()
{
var thread = new Thread(() => { });
bool res = thread.IsBackground;
Console.WriteLine(res);
}
}
Результат выполнения кода:
False
Пример
Давайте включить фоновый режим
до Start:
using System;
using System.Threading;
class Program
{
static void Main()
{
var thread = new Thread(() => { });
thread.IsBackground = true;
bool res = thread.IsBackground;
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Пример
Давайте дождаться фонового
потока через
Join:
using System;
using System.Threading;
class Program
{
static void Main()
{
string text = "";
var thread = new Thread(() => { text = "abcde"; });
thread.IsBackground = true;
thread.Start();
thread.Join();
string res = text;
Console.WriteLine(res);
}
}
Результат выполнения кода:
"abcde"
Смотрите также
-
Join,
ожидание конца -
Start,
запуск -
Thread,
создание потока -
ThreadPool,
фоновые рабочие потоки