Подтвердить что ты не робот

Как перезапустить/повторно использовать повторяющуюся задачу?

У меня есть длительная задача, которую я реализовал с помощью параллельной библиотеки задач. Когда задача запускается, я захватываю снимки нескольких входных значений и коллекций, а затем выполняю различные операции с использованием этой информации. Если какое-либо из этих значений или коллекций изменяется во время выполнения задачи, я бы хотел, чтобы Task Task снова выполнялся сразу после завершения. Должен ли я создавать новую задачу или есть способ повторно использовать существующую задачу? Какой лучший способ запустить вторую итерацию?

4b9b3361

Ответ 1

Создайте новую задачу.

Как указывает http://msdn.microsoft.com/en-us/library/dd270682.aspx, попытка перезапуска запущенной или завершенной задачи не поддерживается. Редко бывает хорошей идеей делать что-то, что обычно генерирует исключение, и повторное использование задачи - одна из тех вещей.

Ответ 2

Вы не можете снова запустить существующий Task. Таким образом, у вас есть два варианта:

  • Запустите новый Task. Вероятно, это чище.
  • Запустите цикл в Task, который проверяет, изменилось ли что-то с последнего раза, и если это произойдет, начинается новая итерация.

Ответ 3

Вы также можете использовать логику рефакторинга для использования указателей функций (или делегатов в VB.NET).