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();
        }
Example #2
0
        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();
        }