У меня есть асинхронный метод, который возвращает задачу.Время от времени мой процесс перерабатывает / перезапускает.Работа прерывается в середине Задачи.Есть ли более или менее общий подход в TPL, чтобы я мог хотя бы зарегистрировать, что Задача была прервана?
- Я размещаюсь в ASP.NET, поэтому я могу использовать IRegisteredObject для отмены задач с CancellationToken.Мне не нравится это однако.Мне нужно передать CancellationToken во всех методах, и у меня их много.
- try..finally в каждом методе, кажется, даже не поднять.ContinueWith также не работает
Любой совет?
У меня есть единственное место, где я запускаю свои асинхронные задачи, однако каждая задача может иметь любое количество дочерних задач.Чтобы получить представление:
class CommandRunner
{
public Task Execute(object cmd, Func<object, Task> handler)
{
return handler(cmd).ContinueWith(t =>
{
if (t.State = == TaskStatus.Faulted)
{
// Handle faultes, log them
}
else if (x.Status == TaskStatus.RanToCompletion)
{
// Audit
}
})
}
}