Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Statements / Delay.cs / 1305376 / Delay.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Statements { using System; using System.Activities; using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime; using System.Windows.Markup; [ContentProperty("Duration")] public sealed class Delay : NativeActivity { static FuncgetDefaultTimerExtension = new Func (GetDefaultTimerExtension); Variable timerBookmark; public Delay() : base() { this.timerBookmark = new Variable (); } [RequiredArgument] [DefaultValue(null)] public InArgument Duration { get; set; } protected override bool CanInduceIdle { get { return true; } } protected override void CacheMetadata(NativeActivityMetadata metadata) { RuntimeArgument durationArgument = new RuntimeArgument("Duration", typeof(TimeSpan), ArgumentDirection.In, true); metadata.Bind(this.Duration, durationArgument); metadata.SetArgumentsCollection(new Collection { durationArgument }); metadata.AddImplementationVariable(this.timerBookmark); metadata.AddDefaultExtensionProvider(getDefaultTimerExtension); } static TimerExtension GetDefaultTimerExtension() { return new DurableTimerExtension(); } protected override void Execute(NativeActivityContext context) { TimeSpan duration = this.Duration.Get(context); if (duration < TimeSpan.Zero) { throw 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); this.timerBookmark.Set(context, bookmark); } protected override void Cancel(NativeActivityContext context) { Bookmark timerBookmark = this.timerBookmark.Get(context); TimerExtension timerExtension = GetTimerExtension(context); timerExtension.CancelTimer(timerBookmark); context.RemoveBookmark(timerBookmark); context.MarkCanceled(); } protected override void Abort(NativeActivityAbortContext context) { Bookmark timerBookmark = this.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); } TimerExtension GetTimerExtension(ActivityContext context) { TimerExtension timerExtension = context.GetExtension (); Fx.Assert(timerExtension != null, "TimerExtension must exist."); return timerExtension; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SafeProcessHandle.cs
- UTF8Encoding.cs
- SemaphoreSecurity.cs
- ExpandableObjectConverter.cs
- ContentType.cs
- RecommendedAsConfigurableAttribute.cs
- DataMemberConverter.cs
- ResponseStream.cs
- OleDbSchemaGuid.cs
- ErrorActivity.cs
- SrgsSemanticInterpretationTag.cs
- TextPenaltyModule.cs
- LineVisual.cs
- Int64KeyFrameCollection.cs
- CategoryNameCollection.cs
- ColorConvertedBitmap.cs
- XmlHierarchicalDataSourceView.cs
- XamlPointCollectionSerializer.cs
- StringValueSerializer.cs
- TextTreeNode.cs
- TransactionTraceIdentifier.cs
- WeakReference.cs
- AttributedMetaModel.cs
- MessageQueuePermission.cs
- Annotation.cs
- Crypto.cs
- TaskHelper.cs
- MD5Cng.cs
- Assert.cs
- TraceListeners.cs
- SchemaNotation.cs
- BufferAllocator.cs
- WindowsFormsHost.cs
- HtmlHead.cs
- XNameTypeConverter.cs
- DependencyPropertyConverter.cs
- ChildTable.cs
- ComponentCommands.cs
- PageWrapper.cs
- UnsafeNativeMethodsTablet.cs
- Identifier.cs
- DBAsyncResult.cs
- StylusButton.cs
- GridPattern.cs
- BitmapPalette.cs
- MetaColumn.cs
- ErrorProvider.cs
- ThicknessKeyFrameCollection.cs
- RegexStringValidatorAttribute.cs
- SoapServerMethod.cs
- ParagraphVisual.cs
- WorkflowEventArgs.cs
- Simplifier.cs
- WebPartConnectionsCloseVerb.cs
- MsmqException.cs
- AppDomainFactory.cs
- KoreanCalendar.cs
- XmlStreamStore.cs
- GeneralTransform.cs
- WSTrustDec2005.cs
- XmlSchemaProviderAttribute.cs
- MessageSecurityOverTcp.cs
- MediaPlayer.cs
- DynamicILGenerator.cs
- ExternalDataExchangeService.cs
- BreakRecordTable.cs
- DiscoveryInnerClientAdhoc11.cs
- DiscoveryClientReferences.cs
- UICuesEvent.cs
- WebPartTransformer.cs
- CompositeScriptReferenceEventArgs.cs
- DrawingContextDrawingContextWalker.cs
- WebPartVerbsEventArgs.cs
- HuffmanTree.cs
- ZipIOLocalFileHeader.cs
- DataFieldConverter.cs
- PatternMatcher.cs
- BindingNavigator.cs
- RegionInfo.cs
- CommandManager.cs
- WebPartCollection.cs
- ImageField.cs
- GetRecipientListRequest.cs
- ParamArrayAttribute.cs
- DocumentDesigner.cs
- PointConverter.cs
- ReflectionServiceProvider.cs
- Parser.cs
- Oid.cs
- Material.cs
- ProfilePropertyMetadata.cs
- Transform3DGroup.cs
- SourceFileBuildProvider.cs
- SystemIPAddressInformation.cs
- DataChangedEventManager.cs
- ThreadAttributes.cs
- ComplusEndpointConfigContainer.cs
- DropDownHolder.cs
- EventInfo.cs
- SystemIcmpV6Statistics.cs