Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Statements / InternalConfirm.cs / 1305376 / InternalConfirm.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Statements { using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Runtime; sealed class InternalConfirm : NativeActivity { public InternalConfirm() : 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 Confirm 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 Confirm activity."); Fx.Assert(tokenData.BookmarkTable[CompensationBookmarkName.Confirmed] == null, "Bookmark should not be already initialized in the bookmark table."); tokenData.BookmarkTable[CompensationBookmarkName.Confirmed] = context.CreateBookmark(new BookmarkCallback(OnConfirmed)); tokenData.CompensationState = CompensationState.Confirming; compensationExtension.NotifyMessage(context, tokenData.CompensationId, CompensationBookmarkName.OnConfirmation); } // Successfully received Confirmed response. void OnConfirmed(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"); // The compensationToken should be a valid one at this point. Ensure its validated in Confirm 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 Confirm activity."); tokenData.CompensationState = CompensationState.Confirmed; 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.Confirmed); // 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
- NativeMethods.cs
- UIElementIsland.cs
- PerformanceCounterNameAttribute.cs
- ModelItemCollectionImpl.cs
- XamlParser.cs
- EnumValidator.cs
- JsonReaderWriterFactory.cs
- EntityParameterCollection.cs
- XmlArrayItemAttribute.cs
- PresentationSource.cs
- SiteMapSection.cs
- XComponentModel.cs
- HttpCachePolicy.cs
- smtpconnection.cs
- DataGridViewControlCollection.cs
- DesignTimeTemplateParser.cs
- ModuleBuilderData.cs
- VsPropertyGrid.cs
- WebSysDefaultValueAttribute.cs
- WSSecurityOneDotZeroReceiveSecurityHeader.cs
- safex509handles.cs
- JpegBitmapDecoder.cs
- Message.cs
- DefaultMergeHelper.cs
- SmiMetaDataProperty.cs
- LassoHelper.cs
- AddInEnvironment.cs
- PublisherIdentityPermission.cs
- RemotingException.cs
- SurrogateSelector.cs
- IsolatedStorageFile.cs
- MachineKeySection.cs
- xmlfixedPageInfo.cs
- FixedSOMPageElement.cs
- DescendantQuery.cs
- ToolStripRenderer.cs
- ISFClipboardData.cs
- PolygonHotSpot.cs
- UserControl.cs
- ConnectionStringEditor.cs
- Int64AnimationUsingKeyFrames.cs
- AccessKeyManager.cs
- OdbcConnectionPoolProviderInfo.cs
- WebPartVerbCollection.cs
- PackWebRequest.cs
- UnionCodeGroup.cs
- CodeDOMProvider.cs
- TrackingDataItem.cs
- processwaithandle.cs
- ApplicationGesture.cs
- OdbcConnectionString.cs
- UIAgentCrashedException.cs
- Style.cs
- TrackingRecord.cs
- SchemaNames.cs
- BaseParagraph.cs
- Separator.cs
- SchemaMapping.cs
- IntegerValidator.cs
- InternalConfigSettingsFactory.cs
- ResXResourceReader.cs
- EventRoute.cs
- ControlDesignerState.cs
- Underline.cs
- LocalizableResourceBuilder.cs
- ObjectDataSourceChooseMethodsPanel.cs
- MatrixConverter.cs
- DataServiceQueryOfT.cs
- TextClipboardData.cs
- LabelLiteral.cs
- httpstaticobjectscollection.cs
- PEFileReader.cs
- MultipartIdentifier.cs
- CommandLibraryHelper.cs
- FreezableOperations.cs
- QuaternionAnimationBase.cs
- CompoundFileReference.cs
- IndexedEnumerable.cs
- _ScatterGatherBuffers.cs
- XslAstAnalyzer.cs
- DataControlFieldTypeEditor.cs
- ReplyChannelAcceptor.cs
- TokenBasedSetEnumerator.cs
- CompilerError.cs
- AttributeInfo.cs
- CompositeActivityCodeGenerator.cs
- HtmlTableCell.cs
- XmlElementList.cs
- TypeConstant.cs
- BuildManager.cs
- MultiViewDesigner.cs
- DbMetaDataFactory.cs
- FloaterBaseParaClient.cs
- Int32Converter.cs
- IIS7WorkerRequest.cs
- PresentationAppDomainManager.cs
- CmsInterop.cs
- Attributes.cs
- DbReferenceCollection.cs
- NativeMethods.cs