У меня есть веб-сайт MVC, который обращается к списку процессов из базы данных и выбирает «случайный» процесс, чтобы пользователь мог анализировать. Он может утверждать или не выполнять этот процесс и автоматически получать другое.Параллельный доступ к данным на MVC .NET
Проблема заключается в том, что несколько пользователей будут выполнять этот процесс одновременно, и мне нужно заблокировать те процессы, которые уже находятся на рассмотрении.
я не могу сделать это на стороне базы данных, так что должно быть решение и приложение полностью невидимым для пользователей ...
Как я могу решить эту проблему?
--- Edit
Один из сценариев будут: Пользователь получить процесс (процесс заблокирован), чем он «забывает» открытой или «закрывает» браузер. Так что мне нужно как-то разблокировать этот процесс.
Некоторые идеи, которые я имел:
Использование MSMQ (? Возможно ли это положить обратно в процесс, когда пользователь «забывают», чтобы закончить задание)
Использование статического ConcurrentBag на мой webapp, чтобы сохранить список идентификаторов при просмотре. (Будет ли IIS перерабатывают убить этот список?)
Благодаря
Для этого вы можете использовать ConcurrentBag. –
У вас может быть другая таблица, в которой есть «ожидающий рассмотрения», а когда выбран процесс, добавьте идентификатор в эту таблицу. При выборе процессов, если идентификатор находится в этой таблице, он уже просматривается, и вам нужно выбрать другой. –
Рон, как я уже сказал по вопросу, я не могу это сделать на стороне базы данных ... – Paul