Ответ 1
Update:
После того, как я ответил на этот вопрос (давным-давно!), я узнал, что это не так, что задачи всегда будут выполняться до завершения - есть небольшой, пусть говорят, "угловой" случай, когда задачи могут не закончиться.
Причиной этого является следующее: как я уже говорил ранее, задачи - это, по существу, потоки; но они являются фоновыми потоками. Фоновые потоки автоматически прерываются, когда заканчиваются все потоки переднего плана. Итак, если вы ничего не делаете с задачей и программой заканчивается, есть шанс, что задача не будет завершена.
Вы всегда должны ждать выполнения задач. Более подробную информацию можно найти на отличном ответе, который дал мне Джон.
Оригинал:
Задача запланирована для ThreadPool, что означает, что они являются, по существу, нитями¹ (фактически они инкапсулируют потоки).
Нет необходимости сохранять ссылку на объект Thread после того, как вы начали поток. Нить продолжает выполняться до тех пор, пока поток процедура завершена.
Итак, нет, нет необходимости сохранять ссылку на него.
Кроме того, в документации указывается, что предпочтительным способом создания Задачи является ее использование factory:
Вы также можете использовать метод StartNew создать и запустить задачу в одном операция. Это предпочтительный способ создавать и запускать задания при создании и планирование не обязательно должно быть разделенные (...)
Надеюсь, что это поможет.
¹ В соответствии с документация:
Задача представляет собой асинхронную и в некотором смысле это напоминает создание нового потока или ThreadPool, но при более высокий уровень абстракции.