コード例 #1
0
        /// <summary>
        /// スケジューラーのシャットダウンを開始する。
        /// Shutdown 呼びだし後、タイマーでしばらく Update を書ける。
        /// </summary>
        /// <param name="scheduler"></param>
        /// <param name="timeout"></param>
        /// <returns></returns>
        public static T.Task BeginShutdown(this TaskScheduler scheduler, TimeSpan timeout)
        {
            var tcs = new T.TaskCompletionSource <object>();

            scheduler.Shutdown(_ => tcs.SetResult(null));

            scheduler.ShutdownTimeout = timeout;

            Timer timer = null;

            timer = new Timer(_ =>
            {
                if (scheduler.Status != TaskSchedulerStatus.Shutdown)
                {
                    timer.Dispose();
                    return;
                }

                scheduler.Update(10);
            }, null, 0, 1);

            return(tcs.Task);
        }
コード例 #2
0
        /// <summary>
        /// スケジューラーのシャットダウンを開始する。
        /// Shutdown 呼びだし後、タイマーでしばらく Update を書ける。
        /// </summary>
        /// <param name="scheduler"></param>
        /// <param name="timeout"></param>
        /// <returns></returns>
        public static T.Task BeginShutdown(this TaskScheduler scheduler, TimeSpan timeout)
        {
            var tcs = new T.TaskCompletionSource<object>();

            scheduler.Shutdown(_ => tcs.SetResult(null));

            scheduler.ShutdownTimeout = timeout;

            Timer timer = null;

            timer = new Timer(_ =>
            {
                if (scheduler.Status != TaskSchedulerStatus.Shutdown)
                {
                    timer.Dispose();
                    return;
                }

                scheduler.Update(10);
            }, null, 0, 1);

            return tcs.Task;
        }