Созданы ли задачи в качестве фоновых потоков?

Мне просто интересно, создает ли новый класс Task в dot.net 4 фоновый или передний поток?

Обычно я устанавливал "IsBackground" в потоке, но нет такого атрибута в Задаче.

Я не смог найти документацию об этом на MSDN: - (

Ответ 1

Не следует проверять:

class Program
{
    static void Main()
    {
        Task
            .Factory
            .StartNew(() => Console.WriteLine(Thread.CurrentThread.IsBackground))
            .Wait();
    }
}

И ответ...

ǝnɹʇ

Ответ 3

Если вы ссылаетесь на начало Task<T> с помощью async и await ключевых слов, тогда ответ будет отрицательным. Выдержка из здесь:

"Асинхронные и ожидающие ключевые слова не приводят к созданию дополнительных потоков. Методы Async не требуют многопоточности, поскольку метод async не запускается в своем потоке. Метод выполняется в текущем контексте синхронизации и использует время в потоке только тогда, когда метод активен. Вы можете использовать Task.Run, чтобы переместить работу с привязкой к процессору в фоновый поток, но фоновый поток не помогает в процессе, который просто ждет, когда результаты станут доступными".

Ответ 4

Задачи выполняются потоками, которые поступают из пула системных потоков. Поток, который поступает из пула потоков, выполняется по умолчанию по умолчанию.

Ответ 5

Если вы еще не уверены в фоновой задаче, просто попробуйте получить доступ к элементу GUI из задачи вроде:

public async Task<int> ProcessStuff_Async()
{
    while(true)
    {
        label1.Text = "processing next item";

чтобы получить исключение времени выполнения:

Работа с кросс-потоками недействительна: Элемент управления 'label1' доступен из потока, отличного от потока, на котором он был создан.

точно так же, как с хорошими старыми регулярными фоновыми потоками.

Информация в Документы MSDN (с 2017 года:-), например:

Лучший способ справиться с этим - начать фоновый поток, который выполняет работу с использованием Task.Run и ждет ее результата. Это позволит пользовательский интерфейс должен выглядеть гладко, поскольку работа выполняется.

В этом документе даже есть раздел What happens under the covers.