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
- SchemaMapping.cs
- XmlRawWriterWrapper.cs
- NativeMethods.cs
- SoapAttributeOverrides.cs
- EventLog.cs
- StatusBarAutomationPeer.cs
- Matrix.cs
- PageCache.cs
- BindUriHelper.cs
- FigureParagraph.cs
- XmlSchemaAll.cs
- FixedPageStructure.cs
- AnnotationService.cs
- ResourceAssociationType.cs
- CompositionAdorner.cs
- CodeDefaultValueExpression.cs
- AssemblyNameProxy.cs
- ConfigErrorGlyph.cs
- Claim.cs
- _SslStream.cs
- DataControlFieldHeaderCell.cs
- SrgsItemList.cs
- CqlLexerHelpers.cs
- FontFamilyIdentifier.cs
- XPathArrayIterator.cs
- EntitySqlQueryCacheKey.cs
- DataControlFieldHeaderCell.cs
- StylusPlugInCollection.cs
- PromptBuilder.cs
- SerialPort.cs
- PropertyTabAttribute.cs
- CompilerScope.Storage.cs
- NotifyCollectionChangedEventArgs.cs
- ParamArrayAttribute.cs
- TypeDescriptor.cs
- DbConnectionPoolIdentity.cs
- CryptoConfig.cs
- uribuilder.cs
- PasswordBoxAutomationPeer.cs
- OleDbPermission.cs
- SpellerError.cs
- FileClassifier.cs
- StringUtil.cs
- CompositeActivityTypeDescriptorProvider.cs
- XsdDuration.cs
- ByteStorage.cs
- FilterRepeater.cs
- SoapSchemaMember.cs
- SQLStringStorage.cs
- BuildProvider.cs
- Menu.cs
- DbSetClause.cs
- WebPartActionVerb.cs
- PrinterSettings.cs
- ValueQuery.cs
- EntitySetBase.cs
- HtmlInputFile.cs
- ServiceReference.cs
- dbenumerator.cs
- FlowDocumentFormatter.cs
- ClusterRegistryConfigurationProvider.cs
- DataControlImageButton.cs
- QueryGeneratorBase.cs
- StringValueSerializer.cs
- AdapterDictionary.cs
- StrokeSerializer.cs
- Model3DCollection.cs
- CodeMemberField.cs
- SessionSymmetricMessageSecurityProtocolFactory.cs
- _FtpControlStream.cs
- RuntimeWrappedException.cs
- SafeHandles.cs
- SqlDataSourceCache.cs
- XmlSchemaImporter.cs
- XmlObjectSerializerWriteContextComplex.cs
- EntityTransaction.cs
- TemplateField.cs
- TraceLevelHelper.cs
- StrokeRenderer.cs
- SelectionProviderWrapper.cs
- FixedSOMImage.cs
- MonitoringDescriptionAttribute.cs
- StreamReader.cs
- TypeBuilderInstantiation.cs
- HtmlElement.cs
- OrderByExpression.cs
- DesignerTransaction.cs
- RemotingConfigParser.cs
- InfiniteTimeSpanConverter.cs
- XmlSerializerNamespaces.cs
- EncryptedPackageFilter.cs
- DetailsViewInsertEventArgs.cs
- _RequestCacheProtocol.cs
- PropertyConverter.cs
- AppDomainUnloadedException.cs
- ReachDocumentReferenceSerializerAsync.cs
- cookieexception.cs
- NativeMethods.cs
- BitmapEffectGeneralTransform.cs
- AsyncCodeActivity.cs