Как установить таймер на 5 минут для выполнения определенной операции в приложении и, если тайм-ауты, вызвать другое событие для выполнения другой задачи - PullRequest
0 голосов
/ 22 мая 2019

Я разрабатываю приложение бронирования авиабилетов. Здесь пользователь выбирает рейс и входит в систему. После входа в систему ему необходимо предоставить 5 минут для завершения бронирования, оплаты и подтверждения билета. Если его задача не будет выполнена в течение 5 минут, его бронь будет отменена. Для отмены мне нужно событие, которое должно быть запущено. Это событие не должно запускаться, если пользовательская операция завершена в течение 5 минут.

Каков наилучший способ сделать это в MVC 5 и C #?

Я нашел метод события c # timer, чтобы выполнить задачу, но я все еще не уверен, следует ли мне использовать это или нет. Есть ли лучшее решение доступно? Кроме того, вы не знаете, как отменить бронирование по истечении 5 минут?

(Обновлено) Я нашел решение, и оно сработало именно так, как я хотел. В случае, если кому-то может понадобиться решение в будущем. Я положен здесь.

private static void OnTimedEvent(object source, ElapsedEventArgs e)
{ 
    //do something
}

protected void Button1_Click(object sender, EventArgs e)
{

    if (Session["Timer"] == null)
    {
        Session["Timer"] = new System.Timers.Timer();
    }

    ((System.Timers.Timer)Session["Timer"]).Interval = 5000;
    ((System.Timers.Timer)Session["Timer"]).Elapsed += OnTimedEvent;
    ((System.Timers.Timer)Session["Timer"]).AutoReset = true;
    ((System.Timers.Timer)Session["Timer"]).Enabled = true; 
}

protected void Button3_Click(object sender, EventArgs e)
{
    ((System.Timers.Timer)Session["Timer"]).Enabled = false;
}

1 Ответ

0 голосов
/ 22 мая 2019

Вы можете использовать CancellationTokenSource, где вы можете установить время ожидания с помощью метода CancelAfter (). Когда время истечет, будет выдано исключение OperationCanceledException, и вы поднимете свое событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...