Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / System / Activities / Statements / CancellationScope.cs / 1305376 / CancellationScope.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace System.Activities.Statements { using System; using System.Activities; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime.Collections; using System.Windows.Markup; [ContentProperty("Body")] public sealed class CancellationScope : NativeActivity { Collectionvariables; Variable suppressCancel; public CancellationScope() : base() { this.suppressCancel = new Variable (); } public Collection Variables { get { if (this.variables == null) { this.variables = new ValidatingCollection { // disallow null values OnAddValidationCallback = item => { if (item == null) { throw FxTrace.Exception.ArgumentNull("item"); } } }; } return this.variables; } } [DefaultValue(null)] [DependsOn("Variables")] public Activity Body { get; set; } [DefaultValue(null)] [DependsOn("Body")] public Activity CancellationHandler { get; set; } protected override void CacheMetadata(NativeActivityMetadata metadata) { metadata.AddChild(this.Body); metadata.AddChild(this.CancellationHandler); metadata.SetVariablesCollection(this.Variables); metadata.AddImplementationVariable(this.suppressCancel); } protected override void Execute(NativeActivityContext context) { if (this.Body != null) { context.ScheduleActivity(this.Body, new CompletionCallback(OnBodyComplete)); } } void OnBodyComplete(NativeActivityContext context, ActivityInstance completedInstance) { // Determine whether to run the Cancel based on whether the body // canceled rather than whether cancel had been requested. if (completedInstance.State == ActivityInstanceState.Canceled || (context.IsCancellationRequested && completedInstance.State == ActivityInstanceState.Faulted)) { // We don't cancel the cancel handler this.suppressCancel.Set(context, true); context.MarkCanceled(); if (this.CancellationHandler != null) { context.ScheduleActivity(this.CancellationHandler, onFaulted : new FaultCallback(OnExceptionFromCancelHandler)); } } } protected override void Cancel(NativeActivityContext context) { bool suppressCancel = this.suppressCancel.Get(context); if (!suppressCancel) { context.CancelChildren(); } } void OnExceptionFromCancelHandler(NativeActivityFaultContext context, Exception propagatedException, ActivityInstance propagatedFrom) { this.suppressCancel.Set(context, false); } } } // 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
- Compilation.cs
- StateManagedCollection.cs
- SynchronizedPool.cs
- ManagedWndProcTracker.cs
- _emptywebproxy.cs
- TextOptions.cs
- NetNamedPipeBindingElement.cs
- StoreConnection.cs
- MetricEntry.cs
- ImageKeyConverter.cs
- WrappingXamlSchemaContext.cs
- LOSFormatter.cs
- PrivilegeNotHeldException.cs
- TableLayout.cs
- CertificateManager.cs
- InputLanguageCollection.cs
- ToolStripItemImageRenderEventArgs.cs
- OleDbMetaDataFactory.cs
- basevalidator.cs
- SafeBitVector32.cs
- EntityCommandDefinition.cs
- Vector3D.cs
- DialogWindow.cs
- DataGridViewSelectedRowCollection.cs
- WebPartTransformer.cs
- LinqDataSourceStatusEventArgs.cs
- PriorityChain.cs
- ChannelCacheDefaults.cs
- FloaterBaseParaClient.cs
- ExpressionBindings.cs
- IPAddressCollection.cs
- ValidationEventArgs.cs
- Effect.cs
- DataListItemCollection.cs
- AsymmetricSignatureFormatter.cs
- HtmlInputRadioButton.cs
- DataGridAutoGeneratingColumnEventArgs.cs
- GlyphTypeface.cs
- FormViewPagerRow.cs
- ResourceReader.cs
- SqlUserDefinedTypeAttribute.cs
- AnnotationComponentChooser.cs
- HWStack.cs
- WCFServiceClientProxyGenerator.cs
- FieldAccessException.cs
- SqlConnectionFactory.cs
- EncoderReplacementFallback.cs
- PermissionSet.cs
- StyleXamlTreeBuilder.cs
- PersistNameAttribute.cs
- ControlBindingsConverter.cs
- WhitespaceRule.cs
- GroupBoxDesigner.cs
- CalendarDesigner.cs
- XmlSiteMapProvider.cs
- SweepDirectionValidation.cs
- XPathNode.cs
- PropertyInfo.cs
- SRGSCompiler.cs
- EntityDataSourceDesigner.cs
- SchemaImporterExtensionsSection.cs
- Models.cs
- TypeConverterHelper.cs
- TransferRequestHandler.cs
- _DisconnectOverlappedAsyncResult.cs
- ListViewHitTestInfo.cs
- TextLineBreak.cs
- TcpChannelListener.cs
- Encoding.cs
- PeerApplication.cs
- SqlRowUpdatedEvent.cs
- ButtonFieldBase.cs
- TriggerCollection.cs
- RuntimeArgumentHandle.cs
- ReadOnlyPropertyMetadata.cs
- StringPropertyBuilder.cs
- SmuggledIUnknown.cs
- ConfigurationErrorsException.cs
- DataTableCollection.cs
- WmlCalendarAdapter.cs
- WindowsToolbar.cs
- InfiniteTimeSpanConverter.cs
- ResourceDescriptionAttribute.cs
- TextEditorContextMenu.cs
- NetworkAddressChange.cs
- XPathNavigatorKeyComparer.cs
- Config.cs
- InstalledFontCollection.cs
- TimeManager.cs
- LOSFormatter.cs
- ScriptBehaviorDescriptor.cs
- DbConnectionPoolIdentity.cs
- Operators.cs
- RTLAwareMessageBox.cs
- DesignTimeParseData.cs
- ConstraintManager.cs
- ProtocolsSection.cs
- FontInfo.cs
- SocketPermission.cs
- mediaeventargs.cs