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
- Deflater.cs
- XmlnsDictionary.cs
- Int16AnimationBase.cs
- _SpnDictionary.cs
- Marshal.cs
- MatrixValueSerializer.cs
- Rect3D.cs
- oledbmetadatacolumnnames.cs
- XmlBaseReader.cs
- EndpointAddressMessageFilter.cs
- QueryGeneratorBase.cs
- DataServiceProviderMethods.cs
- Convert.cs
- DetailsViewRowCollection.cs
- WebPartConnectionsEventArgs.cs
- ToolStripContainerActionList.cs
- StaticExtensionConverter.cs
- CodeDirectiveCollection.cs
- SafeMarshalContext.cs
- ChannelSinkStacks.cs
- KeyGestureConverter.cs
- ContractUtils.cs
- ByteStreamGeometryContext.cs
- TcpHostedTransportConfiguration.cs
- LayoutUtils.cs
- PolyBezierSegmentFigureLogic.cs
- GB18030Encoding.cs
- CodePageUtils.cs
- WCFBuildProvider.cs
- DataGridToolTip.cs
- FactoryGenerator.cs
- OleDbWrapper.cs
- FixedSOMImage.cs
- TaskExtensions.cs
- SqlParameterizer.cs
- TriggerCollection.cs
- configsystem.cs
- DataSourceXmlSerializer.cs
- GetPageNumberCompletedEventArgs.cs
- RenderOptions.cs
- X509CertificateValidationMode.cs
- EdmPropertyAttribute.cs
- FontStretchConverter.cs
- ControlValuePropertyAttribute.cs
- XslVisitor.cs
- ExceptionUtility.cs
- Figure.cs
- ConnectionStringsSection.cs
- CombinedTcpChannel.cs
- AbstractExpressions.cs
- LocalizationComments.cs
- BaseComponentEditor.cs
- ProcessHostConfigUtils.cs
- CodeGen.cs
- ListChangedEventArgs.cs
- SecurityToken.cs
- MetadataImporterQuotas.cs
- precedingquery.cs
- XmlDataLoader.cs
- Brush.cs
- RbTree.cs
- AssociationProvider.cs
- DbConnectionPoolOptions.cs
- SourceFilter.cs
- HighlightComponent.cs
- ProxyWebPart.cs
- SpecularMaterial.cs
- ConfigurationSectionGroup.cs
- ConfigErrorGlyph.cs
- BrowserDefinitionCollection.cs
- ReadWriteSpinLock.cs
- MaskedTextProvider.cs
- SQLStringStorage.cs
- CommandEventArgs.cs
- DeploymentExceptionMapper.cs
- DateTimeConstantAttribute.cs
- _SslSessionsCache.cs
- ByteAnimation.cs
- ToolBarButton.cs
- ContainsSearchOperator.cs
- PageBuildProvider.cs
- MonitorWrapper.cs
- Point4D.cs
- DataRowComparer.cs
- List.cs
- ImageListUtils.cs
- EdmEntityTypeAttribute.cs
- SqlSupersetValidator.cs
- DataContract.cs
- DecoderBestFitFallback.cs
- ArcSegment.cs
- ContextMenuStrip.cs
- MediaElement.cs
- ObjectFullSpanRewriter.cs
- XmlStringTable.cs
- DataViewManagerListItemTypeDescriptor.cs
- CrossAppDomainChannel.cs
- Mutex.cs
- ObjectQuery_EntitySqlExtensions.cs
- Transform3D.cs