Что происходит с локальной ссылкой Задачи, когда она выходит за пределы области видимости и сборщик мусора решает избавиться от нее до завершения задачи?
В основном я спрашиваю, безопасно ли выполнять такой вид реализации вызова службы:
/// <summary>
/// Web service operation to start a large batch asynchronously
/// </summary>
public StartBatchResponseMessage StartBatch(StartBatchRequestMessage request)
{
Task t = Task.Factory.StartNew(DoWork);
return new StartBatchResponseMessage();
}
private void DoWork()
{
// Implement solving world hunger here.
}
Всегда ли DoWork завершается в этом примере? Даже если сборщик мусора решит удалить переменную экземпляра задачи t?
Если нет, то как безопаснее реализовать такую функциональность?