Я ищу шаблон проектирования для выполнения списка заданий, поставленных в очередь в таблице, асинхронно, а также для обновления состояния задания в базе данных (выполнено / не выполнено / отменено). желательно, чтобы я также мог убивать задание по требованию пользователя на тот случай, если задание выполняется дольше, чем ожидалось, или если пользователь по ошибке выполнил задание. каждая из этих работ требует времени для выполнения.
У меня может быть служба Windows, которая отслеживает таблицу на наличие новых заданий, а затем использует многопоточность для их асинхронного выполнения. но многопоточность сложна и подвержена ошибкам. будет ли в любом случае полезным использование услуг WCF для этой цели? например, вместо многопоточности, могу ли я иметь службу WCF для выполнения заданий и вызова ее асинхронно, а затем подписаться на завершенное событие для обновления статуса задания? какой вариант лучше или это не имеет значения? как я уже сказал, я должен иметь возможность отменить работу, а также при необходимости.