Асинхронная функция с задержкой c # - PullRequest
1 голос
/ 28 января 2012

У меня есть веб-страница с кнопкой.когда пользователь нажимает на кнопку, он получает письмо с текущим временем.мне нужно отправить ему еще одно сообщение после 60 секунд асинхронной работы. [он все еще может нажать кнопку, сколько раз он хочет]

как мне это сделать?

Ответы [ 3 ]

1 голос
/ 28 февраля 2012

после поиска вот ответ

// Wait X Sec  and then try to send message
System.Timers.Timer t = new System.Timers.Timer();
t.Interval = Convert.ToDouble(ConfigurationManager.AppSettings["timer"]);
t.Elapsed += delegate { /*your function here */};
t.Start();
t.AutoReset = false; // do it once
0 голосов
/ 28 января 2012

Вы должны хранить данные для расписания в БД с отметкой времени расписания.

Если пользователь нажимает кнопку несколько раз, вы можете проверить в БД, если запланированное электронное письмо уже существует для критериев, игнорировать его.

Вам нужно настроить сервис Cron Job (Scheduler), чтобы он вызывал вас на страницу, которая будет отправлять электронные письма с данными в БД по истечении запланированного времени.

В зависимости от необходимой точности вам необходимо установитьболее короткая длительность отправки Cron Job электронной почты.

Если вы хотите установить собственную службу планировщика, одна хорошая библиотека C # будет http://csharp -source.net / open-source / job-schedulers / quartz-net.

Надеюсь, это поможет.

0 голосов
/ 28 января 2012

Вы можете сделать это на стороне клиента, как предложил @Holystream, но это не даст результата, если пользователь покинет вашу страницу через 60 секунд, не говоря уже о том, чтобы закрыть браузер.

Если вы не хотитечтобы создать свой собственный механизм очередей, вы можете попробовать использовать планировщик Windows.Просто создайте задачу, которая получит доступ к URL-адресу вашего приложения, которое будет отправлять это письмо.Это будет работать с вами, у вас не будет много таких запросов, и если минута не является абсолютно решающей (вы можете немного ее пропустить, планировщик не предназначен для таких разрешений).

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