Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Statements / DefaultCompensation.cs / 1305376 / DefaultCompensation.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Statements { using System; using System.Collections.Generic; using System.Runtime; using System.Collections.ObjectModel; sealed class DefaultCompensation : NativeActivity { Activity body; VariabletoCompensateToken; CompletionCallback onChildCompensated; public DefaultCompensation() : base() { this.toCompensateToken = new Variable (); this.body = new InternalCompensate() { Target = new InArgument (toCompensateToken), }; } public InArgument Target { get; set; } Activity Body { get { return this.body; } } 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 }); metadata.SetImplementationVariablesCollection(new Collection { this.toCompensateToken }); Fx.Assert(this.Body != null, "Body must be valid"); metadata.SetImplementationChildrenCollection(new Collection { this.Body }); } protected override void Execute(NativeActivityContext context) { InternalExecute(context, null); } void InternalExecute(NativeActivityContext context, ActivityInstance completedInstance) { CompensationExtension compensationExtension = context.GetExtension (); if (compensationExtension == null) { throw FxTrace.Exception.AsError(new InvalidOperationException(SR.CompensateWithoutCompensableActivity(this.DisplayName))); } CompensationToken token = Target.Get(context); CompensationTokenData tokenData = token == null ? null : compensationExtension.Get(token.CompensationId); Fx.Assert(tokenData != null, "CompensationTokenData must be valid"); if (tokenData.ExecutionTracker.Count > 0) { if (this.onChildCompensated == null) { this.onChildCompensated = new CompletionCallback(InternalExecute); } this.toCompensateToken.Set(context, new CompensationToken(tokenData.ExecutionTracker.Get())); Fx.Assert(Body != null, "Body must be valid"); context.ScheduleActivity(Body, this.onChildCompensated); } } 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
- UpdateInfo.cs
- CodeExpressionStatement.cs
- Translator.cs
- SqlDuplicator.cs
- XPathQueryGenerator.cs
- ComponentEditorPage.cs
- ActivityWithResultValueSerializer.cs
- ExpressionNormalizer.cs
- TaskHelper.cs
- ConstraintStruct.cs
- ReadOnlyNameValueCollection.cs
- NameNode.cs
- Drawing.cs
- MdiWindowListItemConverter.cs
- RuntimeHandles.cs
- InputLanguageProfileNotifySink.cs
- EdmValidator.cs
- SqlStatistics.cs
- DataControlCommands.cs
- typedescriptorpermission.cs
- RenderCapability.cs
- AppDomainFactory.cs
- SizeValueSerializer.cs
- RowBinding.cs
- HostingPreferredMapPath.cs
- SchemaAttDef.cs
- __ComObject.cs
- CFGGrammar.cs
- RemoteCryptoTokenProvider.cs
- OutOfMemoryException.cs
- HeaderCollection.cs
- FilteredXmlReader.cs
- FormsAuthenticationUser.cs
- JsonStringDataContract.cs
- MemoryPressure.cs
- ImageAttributes.cs
- PreviewPrintController.cs
- categoryentry.cs
- ConsoleCancelEventArgs.cs
- OracleLob.cs
- DataBoundControlHelper.cs
- HelpEvent.cs
- HierarchicalDataBoundControlAdapter.cs
- ObjectConverter.cs
- WorkflowInstanceExtensionManager.cs
- CuspData.cs
- EventWaitHandleSecurity.cs
- SHA1CryptoServiceProvider.cs
- __TransparentProxy.cs
- DataGridColumn.cs
- HttpWriter.cs
- OrderedEnumerableRowCollection.cs
- ReadOnlyNameValueCollection.cs
- SafeHandles.cs
- ClassData.cs
- Expression.cs
- Effect.cs
- UrlMapping.cs
- SqlConnection.cs
- XmlAtomicValue.cs
- printdlgexmarshaler.cs
- OleDbException.cs
- SchemaType.cs
- RequestCache.cs
- CapabilitiesSection.cs
- RegexCompiler.cs
- WeakRefEnumerator.cs
- Floater.cs
- ProxyGenerator.cs
- EUCJPEncoding.cs
- DataColumn.cs
- Opcode.cs
- FileDialog.cs
- SupportingTokenListenerFactory.cs
- ColorConvertedBitmap.cs
- FragmentQueryKB.cs
- OdbcConnectionString.cs
- OpenTypeLayout.cs
- PersonalizationProviderHelper.cs
- ImageMap.cs
- DummyDataSource.cs
- FloatUtil.cs
- StringValidatorAttribute.cs
- Flowchart.cs
- CompModHelpers.cs
- Sql8ExpressionRewriter.cs
- XmlChildNodes.cs
- SendSecurityHeaderElementContainer.cs
- GlobalId.cs
- X509SecurityTokenProvider.cs
- CFStream.cs
- DataGridTablesFactory.cs
- FactoryId.cs
- ExpressionParser.cs
- CheckBoxStandardAdapter.cs
- AuthenticationModulesSection.cs
- WebPartManagerInternals.cs
- FixedSOMLineRanges.cs
- InfoCardXmlSerializer.cs
- DesignParameter.cs