public async Task スケジューラのアクションを待たずに終了できる() { // 実行時の時間を記録するアクションの追加 // 1つだけ早く実行する scheduler.Add(OutputNow, After(1)); scheduler.Add(OutputNow, After(3)); scheduler.Add(OutputNow, After(3)); // スケジューラの開始 Task schedulerTask = scheduler.Start(); await Wait(2); // スケジューラにあるアクションの終了を待たずに終了 scheduler.EndImmediately(); scheduler.Status.Is(TimeActionSchedulerStatus.EndImmediately); // 待機 await Wait(2); // 最初のアクションだけ実行されている output.Count.Is(1); // カウントは減っている scheduler.Count.Is(0); // タスクは終了している schedulerTask.IsCompleted.IsTrue(); }
public static void Alert() { var scheduler = new TimeActionScheduler(); TimeAction timeAction = new(() => { Console.Beep(); Console.WriteLine("キーを入力してください。"); string key = Console.ReadLine(); Console.WriteLine($"{key}が入力されました。"); if (key == "q") { scheduler.EndImmediately(); } }, TimeSpan.FromMinutes(20)) { AdditionType = RepeatAdditionType.AfterExecute, }; scheduler.Add(timeAction); scheduler.Start().Wait(); }