私はボタン付きウェブページを持っています。ユーザがボタンを押すと、現在の時刻の電子メールを得る。私は彼に60秒の非同期後に別のメッセージを送る必要がある。[彼は何度も彼が何度もボタンを押すことができる]遅延を伴う非同期関数C#
どうすればいいの? @Holystreamが提案されているよう
私はボタン付きウェブページを持っています。ユーザがボタンを押すと、現在の時刻の電子メールを得る。私は彼に60秒の非同期後に別のメッセージを送る必要がある。[彼は何度も彼が何度もボタンを押すことができる]遅延を伴う非同期関数C#
どうすればいいの? @Holystreamが提案されているよう
は別のAJAX呼び出しを実行するための答え
// 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
あなたは、クライアント側でそれを行うことができますが、ユーザーはthsoe 60秒でページを離れた場合、それは失敗し、ましてや、ブラウザを閉じます。
独自のキューメカニズムを作成したくない場合は、Windowsスケジューラを使用してみてください。その電子メールを送信するアプリケーションのURLにアクセスするタスクを作成するだけです。そのような要求がたくさんありませんし、分が絶対に重要でない場合(スケジューラはそのような決議のために設計されていません)
スケジュールのデータをスケジュールタイムスタンプ付きのDBに保存する必要があります。
基準はそれを無視するためにスケジュールされた電子メールがすでにある場合は、DBに検証することができ、その時点では存在しているユーザーの押しボタンを複数回場合。
スケジュールされた時間が経過すると、DBのデータから電子メールを送信するページを呼び出すようにCron Job(Scheduler)サービスを設定する必要があります。
あなたが必要とする精度に基づいて、あなたは電子メールを送信するためにcronジョブのための短い時間を設定する必要があります。
独自のスケジューラーサービスを設定したい場合は、1つの良いC#ライブラリーがhttp://csharp-source.net/open-source/job-schedulers/quartz-netです。
これが役に立ちます。ここではそれを見た後に
使用したJavaScriptのsetTimeout関数です。 – Holystream
そこにサーバー側の方法があります – maggie
どのようにするかは、2番目の電子メールが送信されるかどうかによって異なります。 60秒以内にサーバーを再起動しても、電子メールの送信は必要ですか、それとも問題はありませんか?電子メールが遅れていても大丈夫です。遅くではなく、まったく送信しないでください。 –