private TimerExtension GetTimerExtension(ActivityContext context) { TimerExtension timerExtension = context.GetExtension <TimerExtension>(); Fx.Assert(timerExtension != null, "TimerExtension must exist."); return(timerExtension); }
protected override void Cancel(NativeActivityContext context) { Bookmark timerBookmark = _timerBookmark.Get(context); TimerExtension timerExtension = GetTimerExtension(context); timerExtension.CancelTimer(timerBookmark); context.RemoveBookmark(timerBookmark); context.MarkCanceled(); }
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); }
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); }