Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Statements / InternalCompensate.cs / 1305376 / InternalCompensate.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Statements { using System; using System.Collections.ObjectModel; using System.Collections.Generic; using System.Runtime; sealed class InternalCompensate : NativeActivity { public InternalCompensate() : base() { } public InArgumentTarget { get; set; } protected override bool CanInduceIdle { get { return true; } } protected override void CacheMetadata(NativeActivityMetadata metadata) { RuntimeArgument targetArgument = new RuntimeArgument("Target", typeof(CompensationToken), ArgumentDirection.In); metadata.Bind(this.Target, targetArgument); metadata.SetArgumentsCollection(new Collection { targetArgument }); } protected override void Execute(NativeActivityContext context) { CompensationExtension compensationExtension = context.GetExtension (); Fx.Assert(compensationExtension != null, "CompensationExtension must be valid"); CompensationToken compensationToken = Target.Get(context); Fx.Assert(compensationToken != null, "CompensationToken must be valid"); // The compensationToken should be a valid one at this point. Ensure its validated in Compensate activity. CompensationTokenData tokenData = compensationExtension.Get(compensationToken.CompensationId); Fx.Assert(tokenData != null, "The compensationToken should be a valid one at this point. Ensure its validated in Compensate activity."); Fx.Assert(tokenData.BookmarkTable[CompensationBookmarkName.Compensated] == null, "Bookmark should not be already initialized in the bookmark table."); tokenData.BookmarkTable[CompensationBookmarkName.Compensated] = context.CreateBookmark(new BookmarkCallback(OnCompensated)); tokenData.CompensationState = CompensationState.Compensating; compensationExtension.NotifyMessage(context, tokenData.CompensationId, CompensationBookmarkName.OnCompensation); } // Successfully received Compensated response. void OnCompensated(NativeActivityContext context, Bookmark bookmark, object value) { CompensationExtension compensationExtension = context.GetExtension (); Fx.Assert(compensationExtension != null, "CompensationExtension must be valid"); CompensationToken compensationToken = Target.Get(context); Fx.Assert(compensationToken != null, "CompensationToken must be valid"); CompensationTokenData tokenData = compensationExtension.Get(compensationToken.CompensationId); Fx.Assert(tokenData != null, "The compensationToken should be a valid one at this point. Ensure its validated in Compensate activity."); tokenData.CompensationState = CompensationState.Compensated; if(TD.CompensationStateIsEnabled()) { TD.CompensationState(tokenData.DisplayName, tokenData.CompensationState.ToString()); } // Remove the token from the parent! if (tokenData.ParentCompensationId != CompensationToken.RootCompensationId) { CompensationTokenData parentToken = compensationExtension.Get(tokenData.ParentCompensationId); Fx.Assert(parentToken != null, "parentToken must be valid"); parentToken.ExecutionTracker.Remove(tokenData); } else { // remove from workflow root... CompensationTokenData parentToken = compensationExtension.Get(CompensationToken.RootCompensationId); Fx.Assert(parentToken != null, "parentToken must be valid"); parentToken.ExecutionTracker.Remove(tokenData); } tokenData.RemoveBookmark(context, CompensationBookmarkName.Compensated); // Remove the token from the extension... compensationExtension.Remove(compensationToken.CompensationId); } protected override void Cancel(NativeActivityContext context) { // Suppress Cancel } } } // 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
- StickyNoteContentControl.cs
- DPAPIProtectedConfigurationProvider.cs
- WorkItem.cs
- ToolTipAutomationPeer.cs
- Models.cs
- WorkflowInvoker.cs
- SelectionEditingBehavior.cs
- FileCodeGroup.cs
- SystemMulticastIPAddressInformation.cs
- BitConverter.cs
- PerspectiveCamera.cs
- BindingBase.cs
- DesignerCommandSet.cs
- ServiceReference.cs
- ObjRef.cs
- MaskedTextBox.cs
- SqlCacheDependency.cs
- ObjectAnimationBase.cs
- WebPartsPersonalizationAuthorization.cs
- LogLogRecordEnumerator.cs
- CompositeFontFamily.cs
- RadioButtonAutomationPeer.cs
- ExternalCalls.cs
- DiscoveryEndpointValidator.cs
- RequiredFieldValidator.cs
- PlatformNotSupportedException.cs
- VisemeEventArgs.cs
- DataGridViewRowPrePaintEventArgs.cs
- Variable.cs
- GroupQuery.cs
- MailMessage.cs
- OleDbFactory.cs
- HyperLinkField.cs
- DrawingContextDrawingContextWalker.cs
- MimeParameter.cs
- TransformerTypeCollection.cs
- GetReadStreamResult.cs
- DataPagerFieldCollection.cs
- VectorAnimationBase.cs
- IndicShape.cs
- FrameworkElement.cs
- SafeEventLogWriteHandle.cs
- ReaderWriterLock.cs
- ToolStripItemTextRenderEventArgs.cs
- BypassElement.cs
- XmlUTF8TextReader.cs
- ParameterToken.cs
- WebBrowserUriTypeConverter.cs
- SettingsPropertyValueCollection.cs
- UIElement.cs
- XmlDataDocument.cs
- IdentityValidationException.cs
- DodSequenceMerge.cs
- Converter.cs
- MatrixValueSerializer.cs
- BitmapSourceSafeMILHandle.cs
- BuildManagerHost.cs
- CodeGotoStatement.cs
- ExtensionSimplifierMarkupObject.cs
- HttpHandlersSection.cs
- Int64Storage.cs
- NativeCompoundFileAPIs.cs
- AssemblyName.cs
- UTF7Encoding.cs
- EntityTransaction.cs
- AsymmetricKeyExchangeDeformatter.cs
- userdatakeys.cs
- SapiGrammar.cs
- AddingNewEventArgs.cs
- MailWebEventProvider.cs
- DesignTimeParseData.cs
- FunctionMappingTranslator.cs
- AppDomainFactory.cs
- KnownBoxes.cs
- CompositionAdorner.cs
- MemberListBinding.cs
- ThemeableAttribute.cs
- UserControlBuildProvider.cs
- EntityDataSourceContextCreatedEventArgs.cs
- LinqDataView.cs
- FunctionMappingTranslator.cs
- XmlILModule.cs
- ThicknessAnimationUsingKeyFrames.cs
- PeerApplication.cs
- PolyLineSegment.cs
- SqlClientPermission.cs
- DataContext.cs
- EventProvider.cs
- FunctionQuery.cs
- RC2CryptoServiceProvider.cs
- PersonalizationProvider.cs
- AdPostCacheSubstitution.cs
- oledbmetadatacolumnnames.cs
- DiscoveryClientChannelBase.cs
- StructuredTypeEmitter.cs
- EntityCommandDefinition.cs
- HttpModuleCollection.cs
- JsonGlobals.cs
- DependencyProperty.cs
- SystemNetworkInterface.cs