0

仕事のために次の要件を実装する必要があります。

  1. ユーザーが新しいアプリケーションを開始すると、5 分間のタイマーが開始されます。
  2. 5 分が経過する前にユーザーがアプリケーションを編集すると、タイマーはキャンセルされます。
  3. タイマーが完了すると、当社にメールが送信されます(「アプリケーションは作成されましたが放棄されました」)。

このプロジェクトの Web サーバーは .NET MVC プロジェクトですが、ホーム コントローラー以外のすべてのコントローラーは、System.Web.Mvc.Controller ではなく System.Web.Http.ApiController から継承されます。フロントエンドはAngular 6です。

5 分後に「メール送信」メソッドを実行する 5 分間のタイマーを開始するのは簡単に思えます。タイマーが切れる前にユーザーがアプリケーションを編集した場合にタイマーをキャンセルする機能を実装する方法に行き詰まっています。アプリケーションを起動するコマンドとその後の編集は、API への個別のクエリとして送信されるため、呼び出しごとに状態が維持されることはありません。

私の現在のアイデアは、アプリケーションの起動時に System.Timers.Timer を介してタイマーを作成し、その特定のアプリケーションを表す一意の ID の下でタイマーを ObjectCache に保存することです。次に、編集アクションが呼び出されたときに、キャッシュをチェックして、編集中のアプリケーションと一致するタイマーが保存されているかどうかを確認し、保存されている場合はタイマーをキャンセルします。そのような電話が 5 分以内に来ない場合、タイマーが起動し、電子メールが送信されます。

これは機能しますか?(タイマーにアクセスしてキャンセルできることと、タイマーがキャンセルされない場合に期待どおりに起動できることの両方?) この質問の範囲が曖昧であることをお詫びします。タイマーの操作に慣れていないため、検索が妨げられている可能性がありますが、Google や検索 SO はうまくいきませんでした。

ありがとうございました!

4

1 に答える 1