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
- DataBindingHandlerAttribute.cs
- EpmSyndicationContentDeSerializer.cs
- PermissionSetTriple.cs
- Page.cs
- pingexception.cs
- WorkflowCompensationBehavior.cs
- WebColorConverter.cs
- HTTPNotFoundHandler.cs
- SizeChangedEventArgs.cs
- XpsS0ValidatingLoader.cs
- CachedPathData.cs
- WaitForChangedResult.cs
- _ChunkParse.cs
- ReadingWritingEntityEventArgs.cs
- Vector3DIndependentAnimationStorage.cs
- TraceContextRecord.cs
- FontFamilyValueSerializer.cs
- baseaxisquery.cs
- Property.cs
- SecurityPolicySection.cs
- LogicalExpressionEditor.cs
- SmiMetaDataProperty.cs
- SymbolType.cs
- IItemContainerGenerator.cs
- SoapFormatExtensions.cs
- ButtonDesigner.cs
- PeerApplication.cs
- SHA512.cs
- SqlTriggerAttribute.cs
- WebServiceResponse.cs
- XXXInfos.cs
- BehaviorEditorPart.cs
- FixedHyperLink.cs
- NeutralResourcesLanguageAttribute.cs
- PropertyIDSet.cs
- SrgsElementList.cs
- SqlClientWrapperSmiStreamChars.cs
- SmiEventSink_Default.cs
- FlatButtonAppearance.cs
- BufferedGraphicsManager.cs
- CallbackHandler.cs
- FactoryGenerator.cs
- MethodBuilderInstantiation.cs
- RuntimeConfig.cs
- ThreadStateException.cs
- Tokenizer.cs
- MessageHeaders.cs
- PeerTransportBindingElement.cs
- PrimitiveType.cs
- MouseButton.cs
- GroupBoxRenderer.cs
- Int64AnimationBase.cs
- QuaternionRotation3D.cs
- SymmetricAlgorithm.cs
- XmlJsonReader.cs
- ListItemConverter.cs
- processwaithandle.cs
- RemoteWebConfigurationHostStream.cs
- ObjectToModelValueConverter.cs
- ReadOnlyNameValueCollection.cs
- DSASignatureDeformatter.cs
- ColorTranslator.cs
- Separator.cs
- basemetadatamappingvisitor.cs
- ShapeTypeface.cs
- OleCmdHelper.cs
- LocatorPartList.cs
- DashStyle.cs
- BitmapPalette.cs
- ToolStripPanelSelectionGlyph.cs
- TextTreeRootNode.cs
- UserControlParser.cs
- SiteMapNodeItemEventArgs.cs
- RegionInfo.cs
- StrokeSerializer.cs
- remotingproxy.cs
- QueryableDataSourceView.cs
- DodSequenceMerge.cs
- SchemaNames.cs
- EllipseGeometry.cs
- CollectionConverter.cs
- SpeechRecognizer.cs
- BinaryMethodMessage.cs
- Math.cs
- ISessionStateStore.cs
- Monitor.cs
- RowToParametersTransformer.cs
- WebPartTransformer.cs
- LoaderAllocator.cs
- MetadataItemEmitter.cs
- ModelItemCollection.cs
- PageBuildProvider.cs
- RuleSetCollection.cs
- XmlStreamStore.cs
- ChainOfDependencies.cs
- DataGridViewCellEventArgs.cs
- MainMenu.cs
- WindowsListViewGroupHelper.cs
- ObservableDictionary.cs
- OletxTransactionFormatter.cs