示例#1
0
        private TimerExtension GetTimerExtension(ActivityContext context)
        {
            TimerExtension timerExtension = context.GetExtension <TimerExtension>();

            Fx.Assert(timerExtension != null, "TimerExtension must exist.");
            return(timerExtension);
        }
示例#2
0
        protected override void Cancel(NativeActivityContext context)
        {
            Bookmark       timerBookmark  = _timerBookmark.Get(context);
            TimerExtension timerExtension = GetTimerExtension(context);

            timerExtension.CancelTimer(timerBookmark);
            context.RemoveBookmark(timerBookmark);
            context.MarkCanceled();
        }
示例#3
0
        protected override void Abort(NativeActivityAbortContext context)
        {
            Bookmark timerBookmark = _timerBookmark.Get(context);

            // The bookmark could be null in abort when user passed in a negative delay as a duration
            if (timerBookmark != null)
            {
                TimerExtension timerExtension = GetTimerExtension(context);
                timerExtension.CancelTimer(timerBookmark);
            }
            base.Abort(context);
        }
示例#4
0
        protected override void Execute(NativeActivityContext context)
        {
            TimeSpan duration = this.Duration.Get(context);

            if (duration < TimeSpan.Zero)
            {
                throw CoreWf.Internals.FxTrace.Exception.ArgumentOutOfRange("Duration", duration, SR.DurationIsNegative(this.DisplayName));
            }

            if (duration == TimeSpan.Zero)
            {
                return;
            }

            TimerExtension timerExtension = GetTimerExtension(context);
            Bookmark       bookmark       = context.CreateBookmark();

            timerExtension.RegisterTimer(duration, bookmark);
            _timerBookmark.Set(context, bookmark);
        }