У меня есть длительная задача, которая использует обратные вызовы для постепенной подачи данных (а не один обратный вызов ContinueWith () в конце).
Я хочу иметь возможность передать объект Task обратно в этом обратном вызове для целей идентификации задачи (используя Task.CurrentId)
Однако я не могу понять, как передать объект Task в делегат задачи. Похоже, что для этого нет перегрузки, и я не могу использовать замыкание для этого, поскольку объект задачи не определен в этой точке.
например.
public Task StartDoingSomeStuff(CallbackDelegate callback)
{
Task task = Task.Factory.StartNew(() =>
{
while(whatever)
{
var results = DoSomeStuff();
callback(results, task); //CS0165. How do I get hold of the task?
}
});
return task;
}
дает:
ошибка CS0165: использование неназначенной локальной переменной 'task'