Я реализовал механизм организации очередей, включая пользовательский интерфейс для запуска определенных типов рабочих процессов (WF 3.5), где я хотел включить возможность для пользователя отменить / прекратить рабочий процесс. Прекращение не обязательно должно быть синхронным, достаточно показать, что происходит отмена, и позволить ему позже обновить состояние.
До сих пор мне удавалось просто использовать функцию экземпляра рабочего процесса Terminate () , чтобы уничтожить рабочий процесс, который работает идеально и даже синхронно, но кажется, что он не дает рабочему процессу никакой возможности реагировать до прекращения. Я попробовал:
- Создать обработчик отмены на уровне рабочего процесса, это не было выполнено.
- Создание обработчика ошибок на уровне рабочего процесса с типом ошибки WorkflowTeridityException . Это тоже не было выполнено.
В основном кажется, что прекращение означает действительно немедленное завершение рабочего процесса, независимо от того, что он в данный момент делает. Есть ли способ:
- Обрабатывать завершение (с помощью функции Terminate ()) любым другим способом? (возможно, некоторые настройки, которые я пропустил)
- Внешне отменить рабочий процесс таким образом, чтобы его обработчик отмены или обработчик ошибок выполнялся, давая ему возможность привести в порядок и т. Д.?