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
- ExpandedWrapper.cs
- CompilationUtil.cs
- CachedFontFamily.cs
- EventLogPermissionAttribute.cs
- ParameterBinding.cs
- ContextMenu.cs
- TemplateControlCodeDomTreeGenerator.cs
- MemoryStream.cs
- control.ime.cs
- Attributes.cs
- SourceFilter.cs
- RectAnimationClockResource.cs
- ScrollChrome.cs
- InheritanceAttribute.cs
- ExtensionWindow.cs
- SecurityVersion.cs
- EditorAttribute.cs
- UnSafeCharBuffer.cs
- InternalUserCancelledException.cs
- Version.cs
- WebPartConnectionsDisconnectVerb.cs
- StatusBarDrawItemEvent.cs
- ClientTargetSection.cs
- ImageListImageEditor.cs
- SortQuery.cs
- PrimarySelectionGlyph.cs
- DeleteIndexBinder.cs
- SafeCryptoHandles.cs
- List.cs
- WindowsToolbar.cs
- MinimizableAttributeTypeConverter.cs
- SqlEnums.cs
- DataGridColumnsPage.cs
- VirtualDirectoryMapping.cs
- FormatException.cs
- StrongNameMembershipCondition.cs
- HttpStreamMessageEncoderFactory.cs
- CrossSiteScriptingValidation.cs
- VectorKeyFrameCollection.cs
- codemethodreferenceexpression.cs
- DbMetaDataColumnNames.cs
- DataFieldEditor.cs
- WCFServiceClientProxyGenerator.cs
- SQLBinary.cs
- UmAlQuraCalendar.cs
- FocusWithinProperty.cs
- DropDownHolder.cs
- TextBoxView.cs
- DbParameterCollectionHelper.cs
- AssemblyCache.cs
- ServiceCredentialsSecurityTokenManager.cs
- HostUtils.cs
- BlurBitmapEffect.cs
- WinFormsSecurity.cs
- TreeNodeCollection.cs
- TranslateTransform3D.cs
- ReachVisualSerializerAsync.cs
- Image.cs
- WindowsListBox.cs
- WebHttpBindingCollectionElement.cs
- Package.cs
- CompensatableTransactionScopeActivityDesigner.cs
- Header.cs
- ListViewSelectEventArgs.cs
- Package.cs
- ProfileSettingsCollection.cs
- Int32.cs
- ContainsRowNumberChecker.cs
- StrokeNode.cs
- APCustomTypeDescriptor.cs
- SecurityAlgorithmSuite.cs
- _TransmitFileOverlappedAsyncResult.cs
- InternalRelationshipCollection.cs
- EntityProviderServices.cs
- SortAction.cs
- SymmetricKey.cs
- MailWriter.cs
- DetailsViewDeletedEventArgs.cs
- DataServiceQueryException.cs
- PipeSecurity.cs
- DoubleAverageAggregationOperator.cs
- _ChunkParse.cs
- ClientTargetSection.cs
- TypeForwardedToAttribute.cs
- BitmapEffectInput.cs
- Attributes.cs
- EntityType.cs
- SimpleHandlerBuildProvider.cs
- DuplexChannel.cs
- SignedXml.cs
- SkipStoryboardToFill.cs
- ListViewDataItem.cs
- regiisutil.cs
- PointAnimation.cs
- TextRenderer.cs
- InstanceKeyCompleteException.cs
- SHA1Managed.cs
- ControlBuilder.cs
- wmiutil.cs
- CodeTypeParameterCollection.cs