Мне нужно выполнить следующее требование для моей работы.
- Когда пользователь запускает новое приложение, запускается 5-минутный таймер.
- Если пользователь вносит какие-либо изменения в приложение до истечения 5 минут, таймер отменяется.
- Если таймер запускается до конца, нашей компании отправляется электронное письмо («приложение было создано, но оставлено»).
Веб-сервер для этого проекта - это проект .NET MVC, хотя все контроллеры, кроме Home Controller, наследуются от System.Web.Http.ApiController, а не System.Web.Mvc.Controller. Передняя часть угловая 6.
Кажется, достаточно просто запустить 5-минутный таймер, который будет выполнять метод «отправки по электронной почте» через 5 минут. Я застрял на том, как реализовать возможность отмены таймера, если пользователь редактирует приложение до того, как таймер закончится. Команда для запуска приложения и любые последующие изменения будут поступать как отдельные запросы к API, поэтому я не поддерживаю никакого состояния от вызова к вызову.
Моя текущая идея - создать таймер с помощью System.Timers.Timer при запуске приложения и сохранить таймер в ObjectCache под уникальным идентификатором, представляющим это конкретное приложение. Затем, когда вызывается действие редактирования, я могу проверить кэш, чтобы увидеть, хранится ли таймер, соответствующий редактируемому приложению, и, если это так, отменить таймер. Если такой звонок не поступит в течение 5 минут, таймер сработает и электронное письмо будет отправлено.
Будет ли это работать? (Как возможность доступа к таймеру, чтобы отменить его, так и срабатывание таймера, как ожидалось, если не отменено?) Существует ли лучший или более подходящий для .NET способ реализации этого требования? Извиняюсь за неопределенную сферу этого вопроса; Мне не повезло с Google или поиском ТАК, хотя моё незнакомство с работой с таймерами может мешать моим поискам.
Спасибо!