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
- AssemblyResourceLoader.cs
- NetworkInformationPermission.cs
- ColumnMap.cs
- FileRecordSequence.cs
- ReadOnlyDataSource.cs
- BatchWriter.cs
- PeerContact.cs
- AccessorTable.cs
- ListViewUpdateEventArgs.cs
- BinaryKeyIdentifierClause.cs
- UnknownBitmapEncoder.cs
- WebServiceParameterData.cs
- ServicePoint.cs
- DesignSurfaceEvent.cs
- StorageBasedPackageProperties.cs
- MarkupCompiler.cs
- LocalizabilityAttribute.cs
- DetailsView.cs
- RIPEMD160Managed.cs
- DataColumnChangeEvent.cs
- ScriptingWebServicesSectionGroup.cs
- Error.cs
- RectangleGeometry.cs
- TypedElement.cs
- ArrayList.cs
- EntityTemplateFactory.cs
- ReflectEventDescriptor.cs
- WebPartDisplayModeEventArgs.cs
- TextChangedEventArgs.cs
- SetUserLanguageRequest.cs
- ProvidersHelper.cs
- HttpBrowserCapabilitiesWrapper.cs
- WebFormDesignerActionService.cs
- FontFaceLayoutInfo.cs
- TraceSection.cs
- NotifyIcon.cs
- FrugalList.cs
- SystemUdpStatistics.cs
- AuditLevel.cs
- RegularExpressionValidator.cs
- FileVersion.cs
- AttachedPropertyBrowsableWhenAttributePresentAttribute.cs
- XmlChildEnumerator.cs
- DeleteHelper.cs
- PtsHost.cs
- Int16Animation.cs
- IListConverters.cs
- ContourSegment.cs
- UpdateCompiler.cs
- ASCIIEncoding.cs
- KnownColorTable.cs
- HotSpot.cs
- ResolveNameEventArgs.cs
- LazyTextWriterCreator.cs
- DataSourceExpression.cs
- ArcSegment.cs
- BaseInfoTable.cs
- UrlMappingsModule.cs
- ResourcePart.cs
- FlowDocumentFormatter.cs
- ConsoleKeyInfo.cs
- MoveSizeWinEventHandler.cs
- InternalControlCollection.cs
- ExpressionWriter.cs
- OleDbConnectionFactory.cs
- InternalControlCollection.cs
- ValidateNames.cs
- DynamicDocumentPaginator.cs
- UnsafeNetInfoNativeMethods.cs
- DockPanel.cs
- AssemblyAssociatedContentFileAttribute.cs
- StateFinalizationDesigner.cs
- XmlDownloadManager.cs
- XmlNode.cs
- KerberosSecurityTokenProvider.cs
- FrameworkElement.cs
- RemoteWebConfigurationHostStream.cs
- LinqDataSourceSelectEventArgs.cs
- DBSqlParserColumn.cs
- WSTrustFeb2005.cs
- NetworkInterface.cs
- RegistrationServices.cs
- TimerExtension.cs
- MetafileHeaderWmf.cs
- XmlNavigatorFilter.cs
- FixedTextBuilder.cs
- AbsoluteQuery.cs
- SortedList.cs
- VirtualizedItemPattern.cs
- TraceHandler.cs
- InstanceOwnerQueryResult.cs
- CharacterMetricsDictionary.cs
- Encoder.cs
- RoutedUICommand.cs
- QueryOutputWriter.cs
- PointAnimationUsingKeyFrames.cs
- BooleanAnimationUsingKeyFrames.cs
- HelpProvider.cs
- EngineSiteSapi.cs
- LoadRetryConstantStrategy.cs