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
- NamespaceMapping.cs
- ArraySet.cs
- XmlSerializationGeneratedCode.cs
- Bezier.cs
- StateManagedCollection.cs
- MatchingStyle.cs
- SymmetricAlgorithm.cs
- SmtpFailedRecipientsException.cs
- TimelineGroup.cs
- XmlSchemaElement.cs
- MessageTransmitTraceRecord.cs
- BitmapEffectGeneralTransform.cs
- ScrollItemProviderWrapper.cs
- SqlBulkCopyColumnMapping.cs
- DbMetaDataColumnNames.cs
- ThreadPool.cs
- Membership.cs
- SynchronizationFilter.cs
- ResolvedKeyFrameEntry.cs
- CryptographicAttribute.cs
- SqlCommand.cs
- NewItemsContextMenuStrip.cs
- CodeAttributeArgument.cs
- XmlCompatibilityReader.cs
- XmlSerializerNamespaces.cs
- MaterialGroup.cs
- DataGridBoolColumn.cs
- AsyncPostBackTrigger.cs
- LambdaCompiler.Lambda.cs
- Propagator.ExtentPlaceholderCreator.cs
- Activity.cs
- ParseHttpDate.cs
- IpcManager.cs
- ReadOnlyTernaryTree.cs
- NameTable.cs
- PageTheme.cs
- CorrelationTokenInvalidatedHandler.cs
- WebDescriptionAttribute.cs
- SecurityRequiresReviewAttribute.cs
- LocalizableAttribute.cs
- wgx_sdk_version.cs
- SelectionPattern.cs
- SHA256Managed.cs
- DataGridViewHeaderCell.cs
- DataContractJsonSerializerOperationFormatter.cs
- UserPersonalizationStateInfo.cs
- SimpleHandlerBuildProvider.cs
- DataGridTablesFactory.cs
- ProfileGroupSettingsCollection.cs
- DataGridViewCellValidatingEventArgs.cs
- FullTrustAssemblyCollection.cs
- TypeConverterAttribute.cs
- dsa.cs
- Rotation3DAnimation.cs
- DataGridItem.cs
- Cursor.cs
- ServiceContractAttribute.cs
- TraceLog.cs
- MsmqHostedTransportConfiguration.cs
- HtmlControl.cs
- ProfilePropertySettings.cs
- DynamicPropertyReader.cs
- TransformationRules.cs
- NullableDoubleMinMaxAggregationOperator.cs
- ChainedAsyncResult.cs
- DbUpdateCommandTree.cs
- Item.cs
- DiscoveryClientOutputChannel.cs
- PostBackTrigger.cs
- DockProviderWrapper.cs
- FreezableDefaultValueFactory.cs
- XPathMessageFilterTable.cs
- Main.cs
- TransformCryptoHandle.cs
- XsltOutput.cs
- CheckBox.cs
- Size3DConverter.cs
- ResourceType.cs
- DeferredReference.cs
- PerfCounters.cs
- SqlInternalConnectionSmi.cs
- PropagatorResult.cs
- DashStyles.cs
- MobileControlsSectionHandler.cs
- ScrollableControl.cs
- X509CertificateCollection.cs
- BrowserTree.cs
- Geometry.cs
- COMException.cs
- ComponentEditorForm.cs
- WebProxyScriptElement.cs
- CodeBlockBuilder.cs
- CounterCreationDataConverter.cs
- path.cs
- BasicExpressionVisitor.cs
- SettingsSavedEventArgs.cs
- StateMachineWorkflowDesigner.cs
- UserControlBuildProvider.cs
- DataGridTableStyleMappingNameEditor.cs
- XmlSchemaElement.cs