Как перезапустить / повторно использовать повторяющуюся задачу? - PullRequest
13 голосов
/ 27 февраля 2012

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

Ответы [ 3 ]

11 голосов
/ 27 февраля 2012

Создать новое задание.

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

1 голос
/ 27 февраля 2012

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

  1. Начать новый Task. Это, вероятно, чище.
  2. Запустите в вашем Task цикл, который проверяет, изменилось ли что-то с прошлого раза, и если это произойдет, запускает новую итерацию.
0 голосов
/ 12 декабря 2014

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

...