Afzaal Ahmad Zeeshan
Таймер на самом деле является объектом (или типом) C#, который вы можете использовать в своих программах и приложениях C#, таких как WPF, WinForms и т. д. Но поскольку вы отметили MVC 5 этим вопросом и, скорее всего, хотите реализовать эту функцию в веб-приложении, лучшим подходом было бы управлять этим со стороны клиента.
В JavaScript вы можете сделать это,
/*
* bookingMade to be set to true if user has made a booking so timer
* can be ignored and user can continue, in case timer hits.
*/
let bookingMade = false;
let minutes = 5 * 60 * 1000; // 5 minutes
setTimeout(function() {
if(!bookingMade) {
// Refresh the page and capture a new session
}
// else is not needed, as per your case.
}, minutes); // Attach the timeout
Таким образом, вы можете контролировать запросы со стороны клиента и отклонять любой запрос, который приходит через 5 минут. Конечно, это просто не укладывается у меня в голове прямо сейчас, и вы можете сделать работу лучше, чем я. Но в двух словах это тот путь, который вам нужно пройти, чтобы контролировать эту систему бронирования.
Смотрите здесь дополнительную информацию о том, как управлять этим таймером,
WindowOrWorkerGlobalScope.setTimeout() - веб-API | MDN[
^]
Серверная реализация сеанса также является хорошим подходом, так как ваш сервер сам отклонит любой запрос, который придет после истечения времени ожидания сеанса, но я опустил эту часть, поскольку сеансы обычно не следуют тайм—аутам—каждый раз, когда делается запрос, создается новый экземпляр и, таким образом, заставит вас создать статический экземпляр таймера и поддерживать его вместе с запросом или информацией о сеансе, что довольно уродливо, как я себе это представляю, - и вам, возможно, придется писать тайм-ауты сеанса самостоятельно, см.
Тайм-аут сеанса в ASP.NET - переполнение стека[
^]. Эта реализация на стороне сервера может контролировать большую часть того, что вам придется реализовать самостоятельно.